gpt4 book ai didi

python - PyQt5程序不显示小部件

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:32 26 4
gpt4 key购买 nike

我正在为表达式计算器编写一个 pyqt5 程序,但运行该程序后我看不到任何小部件并获得空白窗口

def expressionevaluator():  
import sys
from PyQt5 import QtWidgets
from PyQt5 import QtCore
from PyQt5 import QtGui

from PyQt5.QtWidgets import QApplication, QWidget,QMainWindow


class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window,self).__init__()
self.setGeometry(50,50,500,300)
self.setWindowTitle("PyQt Tutorial")
self.setWindowIcon=QtGui.QIcon('pyqt_example2.PNG')
self.home()


def ExitForm(self):
sys.exit()

def home(self):
vbox=QtWidgets.QVBoxLayout()
textbrowser=QtWidgets.QTextBrowser()
lineedit=QtWidgets.QLineEdit()
btn=QtWidgets.QPushButton("QUIT")
btn.clicked.connect(self.close)
vbox.addWidget(textbrowser)
vbox.addWidget(lineedit)
vbox.addWidget(btn)
self.setLayout(vbox)
self.show()


if __name__=="__main__":
app=QApplication(sys.argv)
GUI=Window()
sys.exit(app.exec_())
expressionevaluator()

那我该怎么办?

最佳答案

刚刚运行您的代码,我的屏幕上显示了一个小部件,但其组件没有显示。不要设置 QMainWindow 的布局,而是尝试让中央小部件(QWidget)使用其组件设置其布局,而不是使用此小部件设置 QMainWindow 中央小部件。好了,现在一切都工作正常了。

<小时/>

您在布局方面遇到了问题,因为 QMainWindow 的行为与其他小部件不同,它有自己的布局和许多其他默认行为,中央小部件是主窗口内没有显示任何内容的原因。

def expressionevaluator():
import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QTextBrowser
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QWidget



class Window(QMainWindow):
def __init__(self):
super(Window,self).__init__()
self.setGeometry(50,50,500,300)
self.setWindowTitle("PyQt Tutorial")
self.setWindowIcon = QIcon('pyqt_example2.PNG')
self.home()


def ExitForm(self):
sys.exit()

def home(self):
vbox = QVBoxLayout()
textbrowser = QTextBrowser()
lineedit = QLineEdit()
btn = QPushButton("QUIT")
central_widget = QWidget()
central_widget.setLayout(vbox)
btn.clicked.connect(self.close)
vbox.addWidget(textbrowser)
vbox.addWidget(lineedit)
vbox.addWidget(btn)
self.setCentralWidget(central_widget)
self.show()


if __name__=="__main__":
app = QApplication(sys.argv)
GUI = Window()
GUI.show()
sys.exit(app.exec_())
expressionevaluator()

注意: 您可以对代码结构进行许多改进,我只是尽可能少地更改以使其正常工作,例如尝试不导入所有一次导入模块,只导入您需要的内容,例如 QIcon、QLineEdit 等,而不是整个 QtWidgets 或 QtCore...

关于python - PyQt5程序不显示小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45407109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com