首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Qwidget中插入Qwidget

如何在Qwidget中插入Qwidget
EN

Stack Overflow用户
提问于 2017-09-07 21:07:20
回答 1查看 1.6K关注 0票数 3

所有的育儿/初始化问题让我不知所措,也不知道为什么这样做不起作用。所以我创建了一个标签,然后我创建了另一个标签,里面有一些画,我制作了一个小部件,其中包含了两个,然后我想把这个新的小部件放在主窗口中……但什么都没有出现

代码语言:javascript
复制
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_())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-07 21:12:56

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

代码语言:javascript
复制
class Labhtml(QLabel):

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

然后,您不需要在Wid类中创建另一个小部件,但是您必须引用self

代码语言:javascript
复制
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的相同)来编写类,并在创建实例时传递它:

代码语言:javascript
复制
class Labhtml(QLabel):

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


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

        html = Labhtml('html')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46105102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档