如何使用dataclass装饰pyqt5class?
How to decorate pyqt5 class using dataclass?
我尝试用python3数据class装饰pyqt5class,但是在我的方法里好像不行?
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()
在您的代码中,您指出 Qt
有一个名为 Widget
的成员,这显然是错误的,我建议您分析您提供的内容,因为它可以被认定为拼写错误.
但即使更正该错误也无济于事,因为如果您在继承自另一个 class 的 class 上实现数据 class,则必须实现 __post_init__
method where you must call the 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_())
我尝试用python3数据class装饰pyqt5class,但是在我的方法里好像不行?
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()
在您的代码中,您指出 Qt
有一个名为 Widget
的成员,这显然是错误的,我建议您分析您提供的内容,因为它可以被认定为拼写错误.
但即使更正该错误也无济于事,因为如果您在继承自另一个 class 的 class 上实现数据 class,则必须实现 __post_init__
method where you must call the 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_())