如何使用dataclass装饰pyqt5类?

时间:2019-12-23 06:26:29

标签: python python-3.x pyqt pyqt5 python-dataclasses

我尝试使用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()

1 个答案:

答案 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_())