Python 自定义标签类不显示文本PqQt5
我对PyQt5中的自定义标签类有一些问题。下面的代码不显示标签文本,只显示空窗口。我在网上搜索过,但没有找到答案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
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)