博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt5-多窗口数据传输
阅读量:5116 次
发布时间:2019-06-13

本文共 2733 字,大约阅读时间需要 9 分钟。

#窗口之间数据传递(通过属性方式)from PyQt5.QtWidgets import QDialogButtonBox, QDateTimeEdit,QDialog,QComboBox,QTableView,QAbstractItemView,QHeaderView,QTableWidget, QTableWidgetItem, QMessageBox,QListWidget,QListWidgetItem, QStatusBar,  QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout,   QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabelfrom PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel,QCursor,QFont,QBrush,QColor,QPainter,QMouseEvent,QImage,QTransformfrom PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize,Qt,QObject,pyqtSignal,QTimer,QEvent,QDateTime,QDateimport sysclass 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__':    app=QApplication(sys.argv)    win = Win()    win.show()    sys.exit(app.exec_())

  

转载于:https://www.cnblogs.com/pythonClub/p/10260782.html

你可能感兴趣的文章