好的......这已经困扰了我几个小时。我有一个带菜单栏的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()
答案 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_())”,该窗口将保留在屏幕上。