我注意到在PyQt5中,初始化QObject
时,可以根据对象的不同,将其传递给关键字以建立某些连接。我认为这非常有用,因为它不仅可以为您节省第二条语句,因此如果不需要,您也不需要显式引用该对象,但更重要的是,在某些情况下这样做很麻烦。例如。如果要创建对象列表,则可以节省循环,等等。
例如,在QActions
的情况下,您可以这样做:
from PyQt5.QtWidgets import QAction
from PyQt5.QtCore import pyqtSlot
@pyqtSlot()
def do_something():
pass
@pyqtSlot()
def do_something_else():
pass
actions = [QAction(triggered=do_something), QAction(triggered=do_something_else)]
但是我只是偶然发现这种行为。我找不到任何地方对此进行记录。例如。在官方的Qt文档中,没有提及关键字(QObject,QAction)。在初始化期间,是否还有更多可以使用QObjects
进行的操作?
我不明白为什么没有对此进行记录。不推荐吗?我使用PyCharm作为编辑器,即使我知道在语法检查especially with regards to PyQt方面存在问题,它也将这些关键字突出显示为“意外参数”。
在Support for Qt Properties的PyQt5 docs部分中,指出哪种类型的数据支持关键字参数:
PyQt5不支持Qt属性的设置和获取,就像 它们是普通实例属性。这是因为一个名称 属性通常与属性的获取者名称冲突 方法。
但是,PyQt5确实支持使用 创建实例时传递的关键字参数。例如:
act = QAction("&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save)
该示例还演示了使用关键字参数进行连接 向插槽发送信号。
PyQt5还支持设置属性值(并连接 使用pyqtConfigure()方法)。例如, 以下给出与上面相同的结果:
act = QAction("&Save", self) act.pyqtConfigure(shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save)
(我的重点)
最后,您可以设置kwargs: