PyQt5 多視窗資料傳輸

2022-09-06 06:03:11 字數 2389 閱讀 5733

#視窗之間資料傳遞(通過屬性方式)

from pyqt5.qtgui import qicon,qpixmap,qstandarditem,qstandarditemmodel,qcursor,qfont,qbrush,qcolor,qpainter,qmouseevent,qimage,qtransform

from pyqt5.qtcore import qstringlistmodel,qabstractlistmodel,qmodelindex,qsize,qt,qobject,pyqtsignal,qtimer,qevent,qdatetime,qdate

import sys

class win(qwidget):

def __init__(self,parent=none):

super(win, self).__init__(parent)

self.resize(400,400)

self.btn=qpushbutton("按鈕",self)

self.btn.move(50,50)

self.btn.setminimumwidth(120)

self.btn.clicked.connect(self.opendialog)

#顯示子視窗傳來的日期字串或者其他資料

self.label=qlabel('這裡顯示資訊',self)

self.label.setminimumwidth(420)

#開啟dialog

def opendialog(self):

dialog=dialog(self)

#連線【子視窗內建訊息和主視窗的槽函式】

dialog.datetime.datechanged.connect(self.slot_inner)

#連線【子視窗自定義訊息和主視窗槽函式】

dialog.dialogsignel.connect(self.slot_emit)

dialog.show()

def slot_inner(self,date):

print("主視窗:method_1")

self.label.settext("①"+str(date)+">>內建訊息獲取日期為")

def slot_emit(self,flag,str):

print("主視窗:method_2")

print(flag)

if flag=="0":#點選ok

self.label.settext("②"+str(str)+">>自定義訊息")

else:#點選cancel

self.label.settext(str)

#彈出框物件

class dialog(qdialog):

#自定義訊息

dialogsignel=pyqtsignal(int,str)

def __init__(self,parent=none):

super(dialog, self).__init__(parent)

layout=qvboxlayout(self)

self.label=qlabel(self)

self.datetime=qdatetimeedit(self)

self.datetime.setcalendarpopup(true)

self.datetime.setdatetime(qdatetime.currentdatetime())

self.label.settext("請選擇日期")

layout.addwidget(self.label)

layout.addwidget(self.datetime)

buttons=qdialogbuttonbox(qdialogbuttonbox.ok|qdialogbuttonbox.cancel,qt.horizontal,self)

buttons.accepted.connect(self.accept)#點選ok

buttons.rejected.connect(self.reject)#點選cancel

layout.addwidget(buttons)

def accept(self):#點選ok是傳送內建訊號

print("accept")

self.dialogsignel.emit(0,self.datetime.text())

self.destroy()

def reject(self):#點選cancel時,傳送自定義訊號

print('reject')

self.dialogsignel.emit(1,"清空")

self.destroy()

if __name__=='__main__':

win = win()

win.show()

PyQt5 多視窗跳轉

在各個視窗類方法例項化需要跳轉的視窗類,再呼叫 show 方法展示新視窗即可。class mywindow qtwidgets.qmainwindow,ui mainwindow 開始視窗 連線視窗 def init self super mywindow,self init self.setupu...

pyqt5多視窗來回切換

coding utf 8 多視窗反覆切換,只用pyqt5實現 import sys 匯入系統 class firstui qmainwindow 第乙個視窗類 def init self super firstui,self init self.init ui def init ui self se...

內建視窗 pyqt5

注意 在主視窗中需要新增乙個girdlayout self.gridlayout.addwidget self.child1 將視窗放入girdlayout中 self.child1.show 開啟子視窗1 小技巧 發現出現了兩個底邊那個東西 在由視窗檔案生成的.py檔案中找到如下 self.sta...