现在您已经拥有了这个新类,如果您之前通过调用 x = QtGui.QCheckBox('text, parent) 创建了(实例化)复选框,那么您现在可以调用 x = MyCheckBox(my_param, 'text', parent) 并且可以通过 x.custom_param 访问您的参数 .
1
您还可以使用 .setProperty() 方法,即动态属性:
self.the_wdiget.setProperty("my_string", "hello")
self.the_wdiget.setProperty("my_bool", True)
self.the_wdiget.setProperty("my_int", 10)
self.the_wdiget.setProperty("my_stringList", ['sl1', 'sl2', 'sl3'])
# And get it by:
self.the_widget.property("my_bool") # etc.
2 回答
你可以只是子类
QCheckBox
类 . 例如:这里我们重写
__init__
方法,在实例化类时会自动调用该方法 . 我们在签名中添加一个额外的参数my_param
,然后收集args
和kwargs
中指定的任何参数和关键字参数 .在我们新的
__init__
方法中,我们首先调用原始QCheckBox.__init__
传递对新对象self
的引用,并且解压缩参数是我们捕获的关键字参数 . 然后,我们保存在实例属性中传递的新参数 .现在您已经拥有了这个新类,如果您之前通过调用
x = QtGui.QCheckBox('text, parent)
创建了(实例化)复选框,那么您现在可以调用x = MyCheckBox(my_param, 'text', parent)
并且可以通过x.custom_param
访问您的参数 .您还可以使用
.setProperty()
方法,即动态属性:字符串也可以设置为可翻译 . 例如 .
http://doc.qt.io/qt-5/qobject.html#setProperty
另见:
http://pyqt.sourceforge.net/Docs/PyQt5/qt_properties.html