不能将 Python 数据类与 PyQt5 小部件一起使用



我有一个存储一些Qt控件的类,所以:

class Controls:
def __init__(self):
self.label = QLabel()

然后我可以做:

x = Controls()
x.label.setText("Hello")

这行得通。该类实际上有几十个控件,而不仅仅是我用于说明的控件,所以我想使用更简洁的 dataclass 表示法:

@dataclass(frozen=True, init=False)
class Controls:
label: QLabel

但是这样做后,我得到一个错误:

属性

错误:"控件"对象没有属性"标签">

我尝试初始化字段(= QLabel()(,我也尝试使用带有defaultdefault_factoryfield,没有乐趣。

我想知道是否有人知道问题是什么?

你必须让构造函数被实现(删除init=False(:

from dataclasses import dataclass, field
@dataclass(frozen=True)
class Controls:
label: QLabel = field(default_factory=QLabel)

最新更新