Jam*_*3sn 2 python pyqt4 python-3.x
好的,对于python来说还是很新的东西,ans刚开始在我的Pi上使用PyQT为我拥有的某些代码制作GUI。但是,该窗口会瞬间打开,然后关闭到一个小窗口。谁能告诉我我要去哪里错了?
import sys
from PyQt4 import QtGui, QtCore
class mainUI(QtGui.QWidget):
def __init__(self):
super(mainUI, self).__init__()
self.initUI()
def initUI(self):
MainWindow = QtGui.QWidget()
MainWindow.showFullScreen()
MainWindow.setWindowTitle('TimeBot')
MainWindow.show()
qbtn = QtGui.QPushButton('Quit')
qbtn.clicked.connect(QtCore.QCoreApplication.quit)
qbtn.move(5,5)
qbtn.show()
self.show()
def main():
app = QtGui.QApplication(sys.argv)
window = mainUI()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
问题是initUi您在其中创建另一个QWidget,将其设置为全屏显示,然后在该小部件超出范围时被垃圾收集并消失。您打算使用self而不是制作新的QWidget。像这样:
import sys
from PyQt4 import QtGui, QtCore
class mainUI(QtGui.QWidget):
def __init__(self):
super(mainUI, self).__init__()
self.initUI()
def initUI(self):
self.showFullScreen()
qbtn = QtGui.QPushButton('Quit')
qbtn.clicked.connect(QtCore.QCoreApplication.quit)
qbtn.move(5,5)
self.button = qbtn
qbtn.show()
def main():
app = QtGui.QApplication(sys.argv)
window = mainUI()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
请注意,我保留了qbtn对它的引用,以便它不会被垃圾收集并消失。