将自定义属性添加到 QCheckBox 小部件
Add custom attribute to QCheckBox widget
我有(我认为)一个简单的问题,但没有找到答案。真的是 pyqt 的新手!
我正在根据多种因素将一些 QtGui.QCheckBox() 小部件动态添加到 gridLayout。我的问题是,如何为每个 chkbox 小部件添加自定义属性?我想在每个 qt 小部件中存储一些自定义内容。
感谢您的帮助。一个基本示例将是最有用的。
干杯
您可以直接 class QCheckBox
class。例如:
class MyCheckBox(QtGui.QCheckBox):
def __init__(self, my_param, *args, **kwargs):
QtGui.QCheckBox.__init__(self, *args, **kwargs)
self.custom_param = my_param
这里我们重写了 __init__
方法,它在您实例化 class 时自动调用。我们向签名添加一个额外的参数 my_param
,然后收集指定到 args
和 kwargs
.
中的任何参数和关键字参数
在我们新的__init__
方法中,我们首先调用原来的QCheckBox.__init__
传递一个对新对象的引用self
并且解包参数是我们捕获的关键字参数。然后我们将传入的新参数保存在一个实例属性中。
现在你有了这个新的 class,如果你之前通过调用 x = QtGui.QCheckBox('text, parent)
创建(实例化)复选框,你现在可以调用 x = MyCheckBox(my_param, 'text', parent)
并且你可以通过 [= 访问你的参数21=].
您还可以使用 .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
另见:
我有(我认为)一个简单的问题,但没有找到答案。真的是 pyqt 的新手!
我正在根据多种因素将一些 QtGui.QCheckBox() 小部件动态添加到 gridLayout。我的问题是,如何为每个 chkbox 小部件添加自定义属性?我想在每个 qt 小部件中存储一些自定义内容。
感谢您的帮助。一个基本示例将是最有用的。
干杯
您可以直接 class QCheckBox
class。例如:
class MyCheckBox(QtGui.QCheckBox):
def __init__(self, my_param, *args, **kwargs):
QtGui.QCheckBox.__init__(self, *args, **kwargs)
self.custom_param = my_param
这里我们重写了 __init__
方法,它在您实例化 class 时自动调用。我们向签名添加一个额外的参数 my_param
,然后收集指定到 args
和 kwargs
.
在我们新的__init__
方法中,我们首先调用原来的QCheckBox.__init__
传递一个对新对象的引用self
并且解包参数是我们捕获的关键字参数。然后我们将传入的新参数保存在一个实例属性中。
现在你有了这个新的 class,如果你之前通过调用 x = QtGui.QCheckBox('text, parent)
创建(实例化)复选框,你现在可以调用 x = MyCheckBox(my_param, 'text', parent)
并且你可以通过 [= 访问你的参数21=].
您还可以使用 .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
另见: