Python 自定义标签类不显示文本PqQt5

Python 自定义标签类不显示文本PqQt5,python,pyqt5,Python,Pyqt5,我对PyQt5中的自定义标签类有一些问题。下面的代码不显示标签文本,只显示空窗口。我在网上搜索过,但没有找到答案 import sys from PyQt5.QtWidgets import QMainWindow, QApplication, QLabel class Label(QLabel): def __init__(self): QLabel.__init__(self) self.setGeometry(40, 400, 100, 100

我对PyQt5中的自定义标签类有一些问题。下面的代码不显示标签文本,只显示空窗口。我在网上搜索过,但没有找到答案

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QLabel


class Label(QLabel):

    def __init__(self):
        QLabel.__init__(self)
        self.setGeometry(40, 400, 100, 100)
        self.setText("This text does not appear")


class MyWin(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setGeometry(1000, 500, 500, 500)
        self.ABC = Label()


app = QApplication(sys.argv)
win = MyWin()
win.show()
sys.exit(app.exec_())

我尝试了
self.ABC=Label(self)
而不是
self.ABC=Label()
,但它出现了错误没有父窗口的小部件
self.ABC=Label()
是一个窗口, 可通过
self.abc.show()
显示

实例化对象并将其添加到calass时,需要传递父对象
self.abc=Label(self)

class Label(QLabel):
    def __init__(self, parent=None):                # parent
        super(Label, self).__init__(parent)         # parent
        ...


如果不为小部件设置父级,它将成为顶级小部件(一个独立的“窗口”)

您可以通过将父控件添加到构造函数(
SomeWidgetClass(parent)
)或在创建后调用来将小部件添加到父控件

您的子类不接受其
\uuuu init\uuuu
中的任何参数(这就是为什么如果执行
标签(self)
,则会出现错误),因此它被视为顶级窗口;由于顶层窗口需要手动调用
show()
才能显示,因此也没有显示它们

解决方案很简单:

class Label(QLabel):

    def __init__(self, parent=None):
        QLabel.__init__(self, parent)
        self.setGeometry(40, 400, 100, 100)
        self.setText("This text does not appear")

class MyWin(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setGeometry(1000, 500, 500, 500)
        self.ABC = Label(self)
建议:避免对变量和属性使用大写名称;更喜欢
self.abc
而不是
self.abc

class Label(QLabel):

    def __init__(self, parent=None):
        QLabel.__init__(self, parent)
        self.setGeometry(40, 400, 100, 100)
        self.setText("This text does not appear")

class MyWin(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setGeometry(1000, 500, 500, 500)
        self.ABC = Label(self)
class MyWin(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setGeometry(1000, 500, 500, 500)

        central = QWidget()
        self.setCentralWidget(central)

        layout = QVBoxLayout()
        central.setLayout(layout)

        self.ABC = Label()
        layout.addWidget(self.ABC)