我正在开发一个简单的 PyQt5 应用程序,我正在尝试使用以下功能从父窗口打开一个新窗口:
def park(self, N):
from time_dialog import T_MainWindow
ui = T_MainWindow(self, N)
ui.show()
我尝试访问的类是:
class T_MainWindow(QtWidgets.QWidget):
def __init__(self, parent, N):
super().__init__()
self.PARENT = parent
self.N = N
self.setupUi()
如果使用以下命令单独运行,这两个窗口都会打开:
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
ui = T_MainWindow("", "")
ui.show()
sys.exit(app.exec_())
最佳答案
当您在第二个示例中打开 T_MainWindow
时,ui
变量是全局,因此它不会被垃圾收集。但是,当您从 park
方法打开它时,ui
变量是本地,因此当该方法返回时它将被垃圾收集(并且因此在窗口显示之前)。要解决这个问题,您可以将局部变量更改为属性,以便保留窗口的引用:
def park(self, N):
from time_dialog import T_MainWindow
self.t_window = T_MainWindow(self, N)
self.t_window.show()
关于python - 无法从方法打开新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47395529/