向QCheckBox小部件添加自定义属性



我有(我认为)一个简单的问题,但没有多少运气试图找到答案。pyqt真的很新!

我正在动态地添加一些QtGui.QCheckBox()小部件到gridLayout基于一些因素。我的问题是,我如何添加自定义attr到每个复选框小部件?我想在每个qt小部件中存储一些自定义的东西。

谢谢你的帮助。一个基本的例子会很有用。

欢呼

您也可以使用.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.

字符串也可以设置为可翻译的。例如

self.the_widget.setProperty("my_string", _translate("Dialog", "hello"))

http://doc.qt.io/qt-5/qobject.html setProperty

也看到:

http://pyqt.sourceforge.net/Docs/PyQt5/qt_properties.html

您可以直接子类化QCheckBox类。例如:

class MyCheckBox(QtGui.QCheckBox):
    def __init__(self, my_param, *args, **kwargs):
        QtGui.QCheckBox.__init__(self, *args, **kwargs)
        self.custom_param = my_param

这里我们重写了__init__方法,该方法在实例化类时自动调用。我们在签名中添加一个额外的参数my_param,然后收集指定到argskwargs中的任何参数和关键字参数。

在我们的新__init__方法中,我们首先调用原始的QCheckBox.__init__,传递对新对象self的引用,并解压缩我们捕获的关键字参数。然后将传递的新参数保存在一个实例属性中。

现在你有了这个新类,如果你之前通过调用x = QtGui.QCheckBox('text, parent)创建(实例化)复选框,你现在可以调用x = MyCheckBox(my_param, 'text', parent),你可以通过x.custom_param访问你的参数

相关内容

  • 没有找到相关文章

最新更新