Qwidget窗口消失



好的。。。这件事已经困扰我好几个小时了。我有一个带菜单栏的qtmain窗口。我已经设法将tje菜单栏中的一个操作连接到一个独立的Qwidget。但一旦Qwidget出现,它就会消失。我使用的是最新版本的pyqt。

这是代码:

Import sys
from PyQt4  import QtGui,  QtCore
Class Main(QtGui.QtMainWindow) :
         def __init__(self) :
               QtGui.QtMainWindow.__init__(self) 
               self.setGeometry(300,300,240,320) 
               self.show() 
               menubar  = self. menuBar() 
               filemenu = menubar. addMenu('&File') 
               new = QtGui.QAction(QtGui.QIcon('new.png'), 'New', self) 
               new.triggered.connect(self.pop) 
               filemenu.addAction(new) 
      def pop(self) :
            pop = Pop() 
class Pop(QtGui.QWidget) :
         def __init__(self) :
               QtGui.QWidget.__init__(self) 
              self.setGeometry(300,300,240,320>
              self.setWindowTitle('Pop up') 
             self.show() 

pop(self)方法更新为:

def pop(self):
    self.window = Pop()

您需要将新创建的窗口的对象存储在一个成员变量中,否则,一旦该方法完成执行,本地变量就会被Python垃圾收集器销毁。

如果您实现了这段代码,您将看到窗口被创建并立即消失。

import sys
from PyQt5 import QtGui, QtWidgets,QtCore
from PyQt5.QtWidgets import QApplication, QMainWindow
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setGeometry(50,50,500,500)
window.setWindowTitle("GUI window")
window.show()

为了解决这个问题,在window.show((之后写"sys.exit(app.exec_((",窗口将留在屏幕上。

最新更新