| 159 | return None |
| 160 | |
| 161 | def bind(self, widget: QWidget, key: str, default: Any = None, prop: str = ""): |
| 162 | # 1. 记录widget和key |
| 163 | if widget not in self._widgetKey: |
| 164 | self.__log( |
| 165 | f"[bind]: bind key: {key} to widget: {self.__widgetInfo(widget)}" |
| 166 | ) |
| 167 | self._widgetKey[widget] = { |
| 168 | "key": key, |
| 169 | "prop": self.getProperty(widget, prop), |
| 170 | } |
| 171 | # 2. 设置控件的默认值 |
| 172 | with self: |
| 173 | self.__setValue(widget, key, default) |
| 174 | |
| 175 | # 3. 记录所有关联的widget |
| 176 | if key not in self._keyWidget: |
| 177 | self._keyWidget[key] = set() |
| 178 | self._keyWidget[key].add(widget) |
| 179 | |
| 180 | # 4. 绑定widget的相关信号 |
| 181 | for signal in self.Signal: |
| 182 | signal = getattr(widget, signal, None) |
| 183 | if signal: |
| 184 | self.__log( |
| 185 | f"[bind]: connect key: {key}, signal: {signal} of widget: {self.__widgetInfo(widget)}" |
| 186 | ) |
| 187 | signal.connect(self.__setData) |
| 188 | break |
| 189 | |
| 190 | def __log(self, *args): |
| 191 | if self.Verbose: |