zoukankan      html  css  js  c++  java
  • PyQt5-多窗口数据传输

    #窗口之间数据传递(通过属性方式)
    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,QLabel
    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__':
    
        app=QApplication(sys.argv)
        win = Win()
        win.show()
        sys.exit(app.exec_())
    

      

  • 相关阅读:
    广域网(ppp协议、HDLC协议)
    0120. Triangle (M)
    0589. N-ary Tree Preorder Traversal (E)
    0377. Combination Sum IV (M)
    1074. Number of Submatrices That Sum to Target (H)
    1209. Remove All Adjacent Duplicates in String II (M)
    0509. Fibonacci Number (E)
    0086. Partition List (M)
    0667. Beautiful Arrangement II (M)
    1302. Deepest Leaves Sum (M)
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10260782.html
Copyright © 2011-2022 走看看