2017-09-07 79 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