小部件未在 pyqt5 中显示标签
Posted
技术标签:
【中文标题】小部件未在 pyqt5 中显示标签【英文标题】:Widget not displaying label in pyqt5 【发布时间】:2019-07-24 09:32:45 【问题描述】:我想在 pyqt5 应用程序中显示一个带有简单消息的窗口。为此,我创建了一个简单的小部件、一个布局和一个标签。我将标签添加到布局并将布局分配给小部件,如下所示:
app = QApplication(sys.argv)
# Create a widget to store information
load_widget = QWidget()
# Create a label with the message to display
load_label = QLabel()
# Set label text
load_label.setText('Data being imported, please wait...')
# Create a layout for the widget
load_layout = QVBoxLayout()
# Add label to the layout
load_layout.addWidget(load_label)
# Set layout for the widget
load_widget.setLayout(load_layout)
# Set window title
load_widget.setWindowTitle('Read SD')
# Show the widget
load_widget.show()
sys.exit(app.exec_())
但是,窗口连同它的标题一起显示,但没有显示标签,如下图所示。
【问题讨论】:
检查我的编辑@eyllanesc 你的操作系统是什么?你有什么版本的 PyQt5?可能是某个特定版本的bug,尝试更新PyQt5。 【参考方案1】:正如@eyllanesc 所说,这不是 MRE,因为如果复制/粘贴并运行它,他们会得到:
QWidget: Must construct a QApplication before a QWidget
我已经扩展了你的代码并正确格式化了它,它工作得很好
from sys import exit as sysExit
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
# Outline a MainWindow Class using a QWidget
class MainWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
# Set window title
self.setWindowTitle('Read SD')
# Create a label with the message to display
# And and attach it to the MainWindow
self.lblLoad = QLabel()
# Set label text
self.lblLoad.setText('Data being imported, please wait...')
# Create a layout for the widget
VBox = QVBoxLayout()
# Add label to the layout
VBox.addWidget(self.lblLoad)
# Add Stretch so Label stays at the top
VBox.addStretch(1)
# Set layout for the widget
self.setLayout(VBox)
if __name__ == "__main__":
# Create Main Thread to Run Program In
MainThred = QApplication([])
# Create Main Window from Outlined Class
MainGUI = MainWindow()
# Show the Main Window
MainGUI.show()
# Launch the Main Thread
sysExit(MainThred.exec_())
【讨论】:
这是一个答案吗?改进代码格式不是答案 该错误与QApplication无关,在另一个被删除的答案中,OP指出它已经创建了一个QApplication。很明显,您必须创建它,但图像中显示的窗口不会显示 问题是,如果你在调用小部件之后运行一些代码,小部件窗口会显示,但标签不会出现。 @DennisJensen 您可以在 cmets 中指出这一点,只是为了他们服务:向 OP 指出如何改进您的问题,要求澄清等。对我来说,您指出了什么不是答案,而是评论。无论如何,这是我的意见,如果你觉得它很棒,如果不是,它也很棒。 :-) @DennisJensen 一件事是帮助,另一件事是回答,一种帮助是回答,但也可以是评论,这就是我的看法。我不想再延长讨论了,再见。以上是关于小部件未在 pyqt5 中显示标签的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Qt 设计器(macos)中显示自定义 PyQt5 小部件插件