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_())
    

      

  • 相关阅读:
    高速排序
    Android 中实现分享和第三方登陆---以新浪微博为例
    linux下用mail发送邮件
    hello.c内核模块编译 -- linux内核
    最小生成树
    JDBC连接Oracle数据库
    解决方案:zabbix(WEB界面的提供分布式系统监视以及网络监视功能)
    Grunt:grunt-tmod
    打包器:Webpack
    模板:art-template-loader
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10260782.html
Copyright © 2011-2022 走看看