#窗口之间数据传递(通过属性方式)
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_())

  

PyQt5-多窗口数据传输的更多相关文章

  1. PyQt5之窗口类型

    [TOC] 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 写在开头 1.1 本文内容 本文的主要内容:PyQt中的窗口部件:QMainWindow,QWidget,QDialog. 上述三 ...

  2. pyqt5实现窗口跳转并关闭上一个窗口

    关键在于要定义一个关闭窗体的函数colsewin() 然后将按键与该函数连接(connect)在一起即可 import sys from PyQt5.QtWidgets import QMainWin ...

  3. pyqt5 设置窗口按钮等可用与不可用

    setEnabled(True) 设置窗口或者按钮可用,Flase不可用

  4. PyQt5【入门-窗口】

    一.窗口 #设置窗口标题 setWindowTitle("标题") #设置窗口坐标和大小 setGeometry(0,0,800,600) """ 项 ...

  5. ybc云计算思维

      YBC的云计算思维 计算机基础 一 计算机由5大单元组成 输入单元(鼠标 键盘) 存储单元(硬盘 内存) 逻辑单元(CPU) 控制单元(主板) 输出单元(显示器 音响 打印机) CPU CPU主要 ...

  6. pyqt5之简单窗口的创建

    在学完tkinter后,发现tkinter在布局方面特别的不方便(Tkinter资料:http://effbot.org/tkinterbook/tkinter-index.htm),因此学习pyqt ...

  7. 内置窗口 pyqt5

    1.使用Qt Designer设计三个窗口 注意:在主窗口中需要添加一个girdLayout 2.创建**.py from PyQt5.QtWidgets import QMainWindow, QA ...

  8. pyqt5 树节点点击实现多窗口切换

    # coding=utf-8 import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui ...

  9. Python pyQt4/pyQt5 学习笔记1(空白窗口,按钮,控件事件,控件提示,窗体显示到屏幕中间,messagebox)

    PyQt4是用来编写有图形界面程序(GUI applications)的一个工具包.PyQt4作为一个Python模块来使用,它有440个类和超过6000种函数和方法.同时它也是一个可以在几乎所有主流 ...

随机推荐

  1. POJ1611:The Suspects(模板题)

    http://poj.org/problem?id=1611 Description Severe acute respiratory syndrome (SARS), an atypical pne ...

  2. PHP 类名::class含义

    自 PHP 5.5 起,关键词 class 也可用于类名的解析. 使用 ClassName::class 可以获取一个字符串,包含了类 ClassName 的完全限定名称.这对使用了命名空间的类尤其有 ...

  3. 《Java程序设计》第十一章 JDBC与MySQL数据库

    目录 java.sql Tips java.sql 安装导入方法见娄老师博客Intellj IDEA 简易教程 照惯例给出官方文档Package java.sql,记得熟练使用ctrl+f以及提高英语 ...

  4. 20165321 实验一Java开发环境的熟悉-2

  5. composer 用法

    构建工程 composer create-project test/name project_name help composer help create-project 参数 --prefer-di ...

  6. vue中解决跨域问题

    方法1.后台更改header header('Access-Control-Allow-Origin:*');//允许所有来源访问 header('Access-Control-Allow-Metho ...

  7. InstallShield2015制作安装包----------安装后实现自动运行

    安装向导完成后,自动运行. 实现的手段是:InstallScript脚本OnEnd()函数里面,调用可执行程序. 备注:INSTALLDIR预定义变量存放着程序的安装目录. //安装后运行dispat ...

  8. IE8 CSS hack

    IE8正式版出来有一段日子了,但是针对ie8正式版的CSS hack却很少,其实这是值得庆幸的,因为ie8修复了很多IE6和IE7的一些BUG,更加接近W3C标准. 针对IE8正式版的CSS hack ...

  9. (转)yuicompressor 与 maven结合,打包,压缩js,css (一)

    js,css代码压缩 web站点需要对js,css代码进行压缩,打包,下面是利用maven进行打包压缩的配置 将压缩后的代码打入到war包中,并且压缩后的js,css文件名不变 <plugins ...

  10. uvalive 3353 Optimal Bus Route Design

    题意: 给出n个点,以及每个点到其他点的有向距离,要求设计线路使得每一个点都在一个环中,如果设计的线路拥有最小值,那么这个线路就是可选的.输出这个最小值或者说明最小线路不存在. 思路: 在DAG的最小 ...