在主 class 中的子 class 中创建的 PyQt5 小部件的设置属性
Setting attribute of a PyQt5 widget created in a subclass within the main class
我做了一个程序,想用类重写它。
我不知道如何更改在 外部 子类中创建的 Qlabel
的文本。
这里的代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setMinimumSize(300,200)
self.layout = QVBoxLayout()
self.layout.addWidget(MyClass(self))
self.setLayout(self.layout)
# i want to change the text label from here
# with label.setText()
class MyClass(QWidget):
def __init__(self, parent):
super(MyClass, self).__init__()
self.parent = parent
self.label = QLabel("My text",self)
self.label.setStyleSheet("color: black;")
self.label.setGeometry(5, 0, 65, 15)
if __name__ == "__main__":
app = QApplication(sys.argv)
root = MainWindow()
root.show()
sys.exit(app.exec_())
谢谢
不需要传递父对象,直接使用对象引用即可:
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setMinimumSize(300,200)
self.layout = QVBoxLayout()
self.myclass = MyClass()
self.layout.addWidget(self.myclass)
self.setLayout(self.layout)
# i want to change the text label from here
self.myclass.label.setText("Foo")
class MyClass(QWidget):
def __init__(self, parent=None):
super(MyClass, self).__init__(parent)
self.label = QLabel("My text",self)
self.label.setStyleSheet("color: black;")
self.label.setGeometry(5, 0, 65, 15)
我做了一个程序,想用类重写它。
我不知道如何更改在 外部 子类中创建的 Qlabel
的文本。
这里的代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setMinimumSize(300,200)
self.layout = QVBoxLayout()
self.layout.addWidget(MyClass(self))
self.setLayout(self.layout)
# i want to change the text label from here
# with label.setText()
class MyClass(QWidget):
def __init__(self, parent):
super(MyClass, self).__init__()
self.parent = parent
self.label = QLabel("My text",self)
self.label.setStyleSheet("color: black;")
self.label.setGeometry(5, 0, 65, 15)
if __name__ == "__main__":
app = QApplication(sys.argv)
root = MainWindow()
root.show()
sys.exit(app.exec_())
谢谢
不需要传递父对象,直接使用对象引用即可:
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setMinimumSize(300,200)
self.layout = QVBoxLayout()
self.myclass = MyClass()
self.layout.addWidget(self.myclass)
self.setLayout(self.layout)
# i want to change the text label from here
self.myclass.label.setText("Foo")
class MyClass(QWidget):
def __init__(self, parent=None):
super(MyClass, self).__init__(parent)
self.label = QLabel("My text",self)
self.label.setStyleSheet("color: black;")
self.label.setGeometry(5, 0, 65, 15)