小部件未在 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 中显示标签的主要内容,如果未能解决你的问题,请参考以下文章

通过 pyqt5 动态添加和删除小部件

PyQt5:如何将回溯显示到小部件中?

如何在PyQt5中叠加小部件?

无法在 Qt 设计器(macos)中显示自定义 PyQt5 小部件插件

将 MouseDoubleClickEvent 添加到 PyQt5 中的 for 循环中制作的小部件 [重复]

尽管更新了小部件,但 Pyqt5 更新的小部件未添加到布局中