PyQT 全屏问题
好的,我还是对Python比较陌生,刚开始在我的树莓派上使用PyQT来为我的代码制作一个图形界面。但是,窗口只打开了一瞬间就又关闭成一个小窗口。有人能告诉我我哪里出错了吗?
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()
2 个回答
0
self.showMaximized()
PyQt5是一个将Qt工具包与Python结合起来的库。关于QtWidgets的使用,有详细的说明文档。
https://doc.qt.io/qt-5/qwidget.html#showMaximized
如果你想了解其他的show*()方法,可以去看看文档,内容非常全面,写得也很好。可能这是世界上文档最齐全的C++框架。
6
问题在于,在 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()
注意,我保留了对 qbtn
的引用,这样它就不会被垃圾回收机制清理掉而消失。