Qwidget窗口消失了

时间:2014-06-06 18:02:15

标签: pyqt4

好的......这已经困扰了我几个小时。我有一个带菜单栏的qtmainwindow。我已经设法将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() 

2 个答案:

答案 0 :(得分:5)

pop(self)方法更新为:

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

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

答案 1 :(得分:0)

如果执行此代码,您将看到该窗口已创建并立即消失。

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_())”,该窗口将保留在屏幕上。