如何在Qwidget中插入一个Qwidget
How to insert a Qwidget inside Qwidget
我对所有 parenting/initialising 问题感到困惑,不知道为什么这不起作用。
所以我创建了一个标签,然后我创建了另一个带有一些绘画的标签,我制作了一个包含这两个标签的小部件,然后我想把这个新的小部件放在主 window... 但什么也没有出现
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_())
首先对于classLabhtml
,继承QLabel时,可以使用基class的方法和属性,或者使用实例化机制传递一些参数:
class Labhtml(QLabel):
def __init__(self):
super().__init__()
self.setText('html')
那么你不需要在 Wid
class 中创建另一个小部件,但你必须参考 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
相同)来编写 classes,并在您创建实例:
class Labhtml(QLabel):
def __init__(self, text):
super().__init__(text)
class Wid(QWidget):
def __init__(self, parent):
super().__init__(parent=parent)
html = Labhtml('html')
我对所有 parenting/initialising 问题感到困惑,不知道为什么这不起作用。 所以我创建了一个标签,然后我创建了另一个带有一些绘画的标签,我制作了一个包含这两个标签的小部件,然后我想把这个新的小部件放在主 window... 但什么也没有出现
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_())
首先对于classLabhtml
,继承QLabel时,可以使用基class的方法和属性,或者使用实例化机制传递一些参数:
class Labhtml(QLabel):
def __init__(self):
super().__init__()
self.setText('html')
那么你不需要在 Wid
class 中创建另一个小部件,但你必须参考 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
相同)来编写 classes,并在您创建实例:
class Labhtml(QLabel):
def __init__(self, text):
super().__init__(text)
class Wid(QWidget):
def __init__(self, parent):
super().__init__(parent=parent)
html = Labhtml('html')