python - 如何在Qwidget中插入一个Qwidget

标签 python pyqt qwidget

我迷失了所有的育儿/初始化问题,不知道为什么这不起作用。 所以我创建了一个标签,然后我创建了另一个带有一些绘画的标签,我制作了一个包含这两个标签的小部件,然后我想把这个新的小部件放在主窗口中......但是没有出现

import sys
import os
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class Labhtml(QLabel):

    def __init__(self):
        super().__init__()

        label = QLabel('html')


class Bar(QLabel):

    def __init__(self):
        super().__init__()

        self.resize(100, 5)

    def paintEvent(self, e):
        qp = QPainter(self)
        qp.setBrush(QColor(200, 0, 0))
        qp.drawRect(0,0,200,3)


class Wid(QWidget):
    def __init__(self, parent):
        super().__init__(parent=parent)

        widget = QWidget()
        html = Labhtml()
        bar = Bar()

        self.layout = QVBoxLayout(widget)
        self.layout.addWidget(html)
        self.layout.addWidget(bar)


class Example(QScrollArea):
    def __init__(self):
        super().__init__()

        widget = QWidget()
        layout = QVBoxLayout(widget)

        layout.addWidget(Wid(widget))

        self.setWidget(widget)
        self.setWidgetResizable(True)

        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

最佳答案

首先对于类Labhtml,继承QLabel时,可以使用基类的方法和属性,也可以使用实例化机制传递一些参数:

class Labhtml(QLabel):

    def __init__(self):
        super().__init__()
        self.setText('html')

那么你不需要在 Wid 类中创建另一个小部件,但你必须引用 self :

class Wid(QWidget):
    def __init__(self, parent):
        super().__init__(parent=parent)

        html = Labhtml()
        bar = Bar()

        self.layout = QVBoxLayout(self)
        self.layout.addWidget(html)
        self.layout.addWidget(bar)

关于实例化机制,您还可以通过声明新的 text 参数(与 Qlabel 相同)来编写类,并在创建实例时传递它:

class Labhtml(QLabel):

    def __init__(self, text):
        super().__init__(text)


class Wid(QWidget):
    def __init__(self, parent):
        super().__init__(parent=parent)

        html = Labhtml('html')

关于python - 如何在Qwidget中插入一个Qwidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105102/

相关文章:

python - 如何获取变量的类型

python - 根据条件随机填充二维矩阵

python - 如何将 Xlsxwriter 文件保存到特定路径?

python - 使用 `if a == b == c: pass;` 在 python 中有副作用吗?

python - worker 完成后不会发出 QThread.finished 信号

c++ - 在 Qt 中如何从另一个文件中的函数访问小部件?

c++ - 如何在 QPixmap 上应用深色 mask 层?

python - 如何从 QTextEdit 上下文菜单中删除标准菜单项

python - 使用 PyQt 进行曲线控制

python - PySide 中的样式表不起作用