目录
1. 概况
对话框分为模态对话框和非模态对话框,模态对话框在使用时是阻塞父窗口的,非模态对话框在使用时,对话框和父窗口是可同时操作的(具体请百度)。PyQt5对于两种对话框的调用不尽相同。
2. 模态对话框
2.1 模态对话框满足的条件
- 在设置时,就需要设置为模态(ApplicationModal),可用designer设置或代码设置
- 此对话框继承于QDialog,QMainWindow和QWidget不可行。
2.2 模态对话框的调用
- 对对话框对象再封装,利于界面于业务分离
#!/usr/bin/env python
# _*_ coding: utf-8 _*_
# @Time : 2020/12/30 16:26
# @Author : luozc
# @Version:V 0.1
# @File : CustomCommandModal.py
# @desc : 自定义命令执行
from PyQt5.QtWidgets import QDialog
from customCommand import *
class CustomCommandModal(QDialog, Ui_CustomCommand):
def __init__(self, parent=None):
QDialog.__init__(self, parent) #必须此调此构造方法来设置父窗口
self.setupUi(self
- 对封装对象调用
#导入窗口对象
from CustomCommandModal import *
#调用
customCommandDialog = CustomCommandModal(parent=self)
if customCommandDialog.exec_():
pass
customCommandDialog.destroy()
3.非模态对话框
3.1 对话框设置条件
- 对话框设置为非模态
- 对话框不继承于QDialog, 可继承于QWidget或QMainWindow
3.2 对话框调用
- 对对话框对象再封装,分离业务和界面
from PyQt5.QtWidgets import QMainWindow
from MainWindow import Ui_MainWindow
class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
'''
指定父窗口,并显示对话框
:param parent:
'''
super(MyWindow, self).__init__(parent) #非模态对话框构造方法,super()用于多继承
self.setupUi(self)
- 调用封装的对话框对象
from MyWindow import *
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()
myWin.show()
sys.exit(app.exec_())
此外,也可以在调用对象中声明一个属性对象,然后再调用对话框对象赋值。来达到界面一直显示的作用。
界面一闪而过,请注意自己调用的变量生命周期