在Qt Designer中创建一个简单的Widget窗体,只包含一个pushButton按钮,想要单击该按钮后弹出一个子窗口。
但是实际运行时发现子窗口闪退。
过程如下:
创建Widget窗体后,先转为py文件,然后新建一个CallMainUI.py文件用来对基本UI界面做修改及添加信号与槽的响应。
在CallMainUI.py文件中设置单击pushButton弹出一个列表对话框:
class MainWin(QMainWindow, Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.pop_win)
def pop_win(self):
lst_widget = QListWidget()
lst_widget.addItems(['item1', 'item2', 'item3'])
lst_widget.show()
运行后,点击按钮,子窗口闪退了。为什么呢?
原因分析:
对话框分为两种:模态对话框与非模态对话框
模态对话框:在弹出模态窗口时会锁定整个程序,使之处于等待状态,直到用户关闭该对话框。这时往往需要对话框的返回值进行接下来的操作。如确认对话框,需要点击是或否关闭它。
非模态对话框,当非模态对话框被打开时,用户可以和该对话框进行交互,也可以