2017-09-07 78 views
2

我迷失了所有的父母/初始化问题,不知道为什么这不起作用。 因此,我创建了一个标签,然后我创建了一个带有一些绘画的标签,他们让我包含这两个小部件,然后我想把这个新的小部件放在主窗口内......但没有出现如何在Qwidget中插入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_()) 

回答

1

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

class Labhtml(QLabel): 

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

然后你不” t需要在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') 
+0

谢谢。对于Labhtml QLabel,我实际上使用HTML文件作为子集。在上面的代码中,标签不会显示该子集的所有内容,它会折叠该标签的HTML子集。任何有关如何避免它的建议,并使标签调整尺寸以显示整个HTML表格? – user3755529

+0

你能举一个HTML文件的例子吗?如果你在这里没有找到答案,也许会创建一个新问题,这可能会帮助其他人。 – PRMoureu