时间:2021-05-23
在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象赋值到普通变量,并调用其show 方法。
from PyQt5.QtWidgets import *import sys class Main(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("主窗口") button = QPushButton("弹出子窗", self) button.clicked.connect(self.show_child) def show_child(self): child_window = Child() child_window.show() class Child(QWidget): def __init__(self): super().__init__() self.setWindowTitle("我是子窗口啊") # 运行主窗口if __name__ == "__main__": app = QApplication(sys.argv) window = Main() window.show() sys.exit(app.exec_())运行结果: 该段代码运行后,点击主窗口中的按钮,子窗口一闪而过。
在主窗口添加按钮,并把按钮信号关联槽,在槽函数中创建子窗口对象并赋值为对象属性,并调用其show 方法。
from PyQt5.QtWidgets import *import sys class Main(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("主窗口") button = QPushButton("弹出子窗", self) button.clicked.connect(self.show_child) def show_child(self): self.child_window = Child() self.child_window.show() class Child(QWidget): def __init__(self): super().__init__() self.setWindowTitle("我是子窗口啊") # 运行主窗口if __name__ == "__main__": app = QApplication(sys.argv) window = Main() window.show() sys.exit(app.exec_())运行结果: 该段代码运行后,点击主窗口中的按钮,子窗口正常打开,重复点击按钮,子窗口重复弹出。
在主窗口__init__方法中创建子窗口对象并赋值为对象属性,添加按钮,并把按钮信号关联槽,在槽函数中调用子窗口对象的show 方法。
from PyQt5.QtWidgets import *import sys class Main(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("主窗口") button = QPushButton("弹出子窗", self) button.clicked.connect(self.show_child) self.child_window = Child() def show_child(self): self.child_window.show() class Child(QWidget): def __init__(self): super().__init__() self.setWindowTitle("我是子窗口啊") # 运行主窗口if __name__ == "__main__": app = QApplication(sys.argv) window = Main() window.show() sys.exit(app.exec_())运行结果: 重复点击按钮,子窗口不重复弹出。
把例1的show()方法改为exec()方法
from PyQt5.QtWidgets import *import sys class Main(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("主窗口") button = QPushButton("弹出子窗", self) button.clicked.connect(self.show_child) def show_child(self): child_window = Child() child_window.exec() class Child(QWidget): def __init__(self): super().__init__() self.setWindowTitle("我是子窗口啊") # 运行主窗口if __name__ == "__main__": app = QApplication(sys.argv) window = Main() window.show() sys.exit(app.exec_())运行结果:子窗口顺利弹出,且不能重新选择父窗口
这里涉及到一个概念 模式对话框 与 非模式对话框 (modeless dialog | modal dialog)
模式对话框,就是在弹出窗口的时候,整个程序就被锁定了,处于等待状态,直到对话框被关闭。这时往往是需要对话框的返回值进行下面的操作。如:确认窗口(选择“是”或“否”)。
非模式对话框,在调用弹出窗口之后,调用即刻返回,继续下面的操作。这里只是一个调用指令的发出,不等待也不做任何处理。如:查找框。
show() ------modeless dialog
exec() -------modal dialog
到此这篇关于Python PyQt5中弹出子窗口解决子窗口一闪而过的问题的文章就介绍到这了,更多相关Python PyQt5弹出子窗口内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
介绍在使用matplotlib的过程中,发现不能像matlab一样同时开几个窗口进行比较,于是查询得知了交互模式,但是放在脚本里运行的适合却总是一闪而过,图像并
一:安装PyQt5pipinstallpyqt5二:PyQt5简单使用1:使用PyQt5创建一个简单窗口importsysfromPyQt5importQtWi
前些天做项目时遇到了个浏览器兼容问题,解决后记录一下,也将模式化的资料放上!详细问题描述:在火狐浏览器中弹出一个子窗口,子页面中是一个分页,点下一页后子页面会刷
最近使用python里的matplotlib库绘图,想在代码结束时显示图片看看,结果图片一闪而过,附上我原来代码:importmatplotlib.pyplot
在之前的文章中,我们介绍了PyQt5和PySide2中主窗口控件MainWindow的使用、窗口控件的4中基础布局管理。从本篇开始,我们来了解一下PyQt5和P