我是 QT 新手,并且使用 QT 5 在 python 中进行编程。我有一个主窗口,但是当我尝试单击第二个窗口的按钮时,它会显示但很快就会消失。有谁知道我该如何解决这个问题?
def SecondWindow():
qw = QWidget()
qw.resize(800, 800)
qw.move(300, 300)
qw.show()
最佳答案
Python 与 C++ 不同:在后者中,即使您会泄漏小部件,代码也会按需要工作。从技术上讲,我们不会泄漏该小部件,因为它可以从 QApplication::topLevelWidgets
访问。
在Python中,SecondWindow
完成后没有对qw
的引用:它是一个局部变量。因此,该小部件会立即被销毁,因为 Python 首先使用引用计数来进行对象生命周期管理,而垃圾收集器仅用于收集形成循环的对象,但这里的情况并非如此。
解决方案是保留对您创建的小部件的引用:
class MyClass(QObject):
@pyqtSlot()
def second_windowClick(self):
self.SecondWindow()
def SecondWindow(self):
qw = QWidget()
qw.resize(800, 800)
qw.move(300, 300)
qw.show()
self.qw = qw
关于python - QT 消失第二个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47657046/