首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当没有使用断点时,PyQt5 Widget消失

当没有使用断点时,PyQt5 Widget消失
EN

Stack Overflow用户
提问于 2020-12-26 16:42:43
回答 1查看 311关注 0票数 0

不要批评我使用不同的类--他的原因是因为QtDesigner创建的项目中会有更多的GUI,但这在目前来说并不重要。

一般来说,我有两个Python脚本:

main.py:

代码语言:javascript
复制
from PyQt5 import QtCore, QtWidgets, QtGui
import sys
import time

from gui_class import Gui

app = QtWidgets.QApplication(sys.argv)

gui = Gui()

sys.exit(app.exec_())

gui_class.py:

代码语言:javascript
复制
from PyQt5 import QtWidgets

class Gui():
    def __init__(self):
        w = QtWidgets.QWidget()
        w.resize(500, 500)
        self.button = QtWidgets.QPushButton(w)
        self.button.setGeometry(100, 100, 300, 300)
        w.show()

如果我运行main.py-脚本,那么窗口就会出现一秒,然后立即消失。我看不到它,我不能点击它。但是,代码并没有终止。它还在等待应用程序完成--不过我什么也做不了。

如果我在gui_class.py中的行前面放置了一个断点,并简单地在该行停止后继续代码,则GUI是可见的,我可以单击该按钮,代码在关闭窗口后终止--所有操作都按预期进行。

我使用的是PyQt5: 5.15.2和Python3.7。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-26 16:50:56

问题是,w是一个局部变量,当创建它的作用域完成执行时,它将被销毁。解决方案是通过将其作为类的属性来扩展其生命周期,从而增加其作用域,因此必须使用w更改self.w

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65458538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档