pyqt 多窗口之间的相互调用方法


Posted in Python onJune 19, 2019

* 在编程开发中,一个程序不可避免的需要多窗口操作来实现具体的功能。

实现此功能的基本步骤(以三个窗口为例,使用主窗口调用其它两个窗口)

# 主窗口
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object):
  def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(800, 600)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
 
    self.pushButton = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton.setGeometry(QtCore.QRect(70, 180, 75, 23))
    self.pushButton.setObjectName("pushButton")
 
    self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton_2.setGeometry(QtCore.QRect(250, 180, 75, 23))
    self.pushButton_2.setObjectName("pushButton_2")
 
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)
 
    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
  def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.pushButton.setText(_translate("MainWindow", "打开窗口1"))
    self.pushButton_2.setText(_translate("MainWindow", "打开窗口2 "))
 
# 窗口1
class Ui_Dialog(object):
  def setupUi(self, Dialog):
    Dialog.setObjectName("Dialog")
    Dialog.resize(400, 300)
    self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
    self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
    self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
    self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
    self.buttonBox.setObjectName("buttonBox")
    self.label = QtWidgets.QLabel(Dialog)
    self.label.setGeometry(QtCore.QRect(140, 100, 54, 12))
    self.label.setObjectName("label")
 
    self.retranslateUi(Dialog)
    self.buttonBox.accepted.connect(Dialog.accept)
    self.buttonBox.rejected.connect(Dialog.reject)
    QtCore.QMetaObject.connectSlotsByName(Dialog)
 
  def retranslateUi(self, Dialog):
    _translate = QtCore.QCoreApplication.translate
    Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
    self.label.setText(_translate("Dialog", "这是窗口1"))
# 窗口2
 
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName("Form")
    Form.resize(400, 300)
    self.label = QtWidgets.QLabel(Form)
    self.label.setGeometry(QtCore.QRect(140, 140, 54, 12))
    self.label.setObjectName("label")
 
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
 
  def retranslateUi(self, Form):
    _translate = QtCore.QCoreApplication.translate
    Form.setWindowTitle(_translate("Form", "Form"))
    self.label.setText(_translate("Form", "这是窗口2"))

主程序入口:

# 主程序
class MainWindow(QMainWindow, untitled.Ui_MainWindow):
  def __init__(self):
    super(MainWindow, self).__init__()
    self.setupUi(self)
    self.window2 = Ui_Dialog()
    self.window2.setupUi()
    self.window3 = Ui_Form()
    self.window3.setupUi()
    self.pushButton.clicked.connect(self.window2.show)# 绑定窗口2 
    self.pushButton_2.clicked.connect(self.window3.show) # 绑定窗口3
 
 
if __name__ == '__main__':
  app = QApplication(sys.argv)
  MainWindow = MainWindow()
  MainWindow.show()
  sys.exit(app.exec_())

以上实现主窗口通过按钮弹出窗口1和窗口2

下面实现通过窗口按钮打开文件资源管理器,实现获取文件相关信息的功能:

1. 在主窗口中添加一个按钮:

class Ui_MainWindow(object):
  def setupUi(self, MainWindow):
    ......
    self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton_3.setGeometry(QtCore.QRect(420, 180, 75, 23))
    self.pushButton_3.setObjectName("pushButton_3")
  def retranslateUi(self, MainWindow):
    ......
    self.pushButton_3.setText(_translate("MainWindow", "打开目录"))

2.主程序中添加:

# 主程序
class MainWindow(QMainWindow, untitled.Ui_MainWindow):
  def __init__(self):
    super(MainWindow, self).__init__()
    self.setupUi(self)
    self.window2 = Ui_Dialog()
    self.Window2.setupUi()
    self.window3 = Ui_Form()
    self.Window3.setupUi()
    self.pushButton.clicked.connect(self.window2.show)# 绑定窗口2 
    self.pushButton_2.clicked.connect(self.window3.show) # 绑定窗口3
 
    self.pushButton_3.clicked.connect(self.gefilename) # 新增加的
  # 新增加的
  def gefilename(self):
    filename = QFileDialog.getOpenFileName()
    return filename
 
 
if __name__ == '__main__':
  app = QApplication(sys.argv)
  MainWindow = MainWindow()
  MainWindow.show()
  sys.exit(app.exec_())

即可完成上述功能。

以上这篇pyqt 多窗口之间的相互调用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Django框架实现自定义表单提交
Mar 25 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
Jun 14 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
将python包发布到PyPI和制作whl文件方式
Dec 25 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
python异步Web框架sanic的实现
Apr 27 Python
python与js主要区别点总结
Sep 13 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 Python
pyqt5 实现多窗口跳转的方法
Jun 19 #Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 #Python
Pyqt5 实现跳转界面并关闭当前界面的方法
Jun 19 #Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 #Python
Python发展史及网络爬虫
Jun 19 #Python
Python QQBot库的QQ聊天机器人
Jun 19 #Python
python替换字符串中的子串图文步骤
Jun 19 #Python
You might like
实现dedecms全站URL静态化改造的代码
2007/03/29 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
js+css实现select的美化效果
2016/03/24 Javascript
jquery插件Jplayer使用方法简析
2016/04/22 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
django中使用POST方法获取POST数据
2019/08/20 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
pandas数据处理之绘图的实现
2020/06/15 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
简历中的自我评价怎么写
2014/01/29 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
应聘教师自荐书
2014/06/16 职场文书
党员民主评议自我评价
2014/10/20 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
芙蓉镇观后感
2015/06/10 职场文书
初中语文教学研修日志
2015/11/13 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python