【问题标题】:PyQt custom widget not visiblePyQt 自定义小部件不可见
【发布时间】:2021-03-03 23:11:17
【问题描述】:

按照“创建简单 GUI”中概述的示例,我尝试创建自定义小部件,但似乎没有显示任何内容。它似乎是我能想象到的最简单的小部件,但仍然缺少一些东西,我不知道是什么。

from PyQt5.QtWidgets import *
import sys
class customWidget(QWidget):
    def __init__(self, *args, **kwargs):
        super(customWidget, self).__init__(*args, **kwargs)
        layout = QHBoxLayout()
        label = QLabel("Que chinga")
        layout.addWidget(label)
class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setWindowTitle("Esta locura")
        label = customWidget()
        self.setCentralWidget(label)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()

【问题讨论】:

    标签: python qt pyqt


    【解决方案1】:

    customWidget__init__ 中执行以下任一操作(它们在概念上是相同的):

    • 在创建布局后添加self.setLayout(layout)
    • layout = QHBoxLayout()更改为layout = QHBoxLayout(self)

    原因是您没有为小部件设置布局,因此 QLabel 没有父级,不会单独显示。

    实际上,customWidget 实例可以知道有关这些对象的任何信息,因此没有理由显示它们。

    我也建议你:

    1. 阅读classes and instances:虽然它与这个问题没有直接相关,但它有很多共同点,因为 Qt 对象(如 QWidget 子类)的父级关系与实例的 OOP 方面。
    2. 始终对类使用大写名称(CustomWidget,而不是 customWidget),因为小写名称只能用于变量和函数名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-19
      • 2010-12-09
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      相关资源
      最近更新 更多