我尝试使用python3数据类装饰pyqt5类,但在我的方法中似乎不起作用?
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from dataclasses import dataclass
@dataclass()
class Demo(QWidget):
name: str = 'jim'
addr: str = 'usa'
app = QApplication([])
win = Demo()
win.show()
app.exec()
答案 0 :(得分:2)
在您的代码中,您指出Qt
的成员名为Widget
显然是错误的,我建议您分析您提供的内容,因为它可以被视为错字。
但是,即使纠正该错误也不起作用,因为如果在从另一个类继承的类上实现数据类,则必须实现__post_init__
方法,而必须调用super()
方法:
from dataclasses import dataclass
import sys
from PyQt5 import QtWidgets
@dataclass
class Demo(QtWidgets.QWidget):
name: str = "jim"
addr: str = "usa"
def __post_init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
win = Demo()
print(win.name, win.addr)
win.show()
sys.exit(app.exec_())