pyqt创建window窗口闪退情况解决(避坑)

1. 使用qt designer创建窗口界面

这个都很熟悉了,就不重复说明了。(自行百度)
pyqt创建window窗口闪退情况解决(避坑)_第1张图片

2. pyqt将 .ui 文件转成python代码

cd到 .ui文件的目录,使用指令即可完成。得到一个py文件(一个类)
pyqt创建window窗口闪退情况解决(避坑)_第2张图片
红色部分是我自己加上去的,只是为了更好看懂代码,调试代码。

3. 运行pyqt生成的python代码,生成界面

这里,需要添加几行代码!直接在Ui_Dialog类的py文件尾部添加如下代码:

if __name__ == "__main__":
    app = QApplication(sys.argv)
    w = Ui_Dialog()
    form = QWidget()
    w.setupUi(form)
    form.show()
    sys.exit(app.exec_())
    pass

点击运行即可!

4. 接下来是重点,闪退的问题

  • 使用qt必然是想做成一个exe程序,总不可能一个py文件就把所以程序放完吧。这调试过程会非常麻烦而且痛苦。那么如何在其他py文件中调用这个类,并创建窗口体呢?

    研究上述代码可以发现:主要就是使用 setupUi(form) 这个方法。

    那么,如果你想偷懒,直接在某个函数中创建类后,调用 setupUi( QWidget() ) ,那么恭喜你,凉凉!此时就会出现闪退的情况。

这里有个教训分享:

在创建窗体的时候,应该在主函数中以此调用:(下面三个)

app = QApplication(sys.argv)
form = QWidget()   #一定要单独赋予变量,不能偷懒,否则闪退!
(任意方法调用到这个即可)w.setupUi(form)
sys.exit(app.exec_())

你可能感兴趣的:(python,pycharm)