初始化期间您可以传递给QObject什么样的kwarg?

问题描述 投票:2回答:1

我注意到在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文档中,没有提及关键字(QObjectQAction)。在初始化期间,是否还有更多可以使用QObjects进行的操作?

我不明白为什么没有对此进行记录。不推荐吗?我使用PyCharm作为编辑器,即使我知道在语法检查especially with regards to PyQt方面存在问题,它也将这些关键字突出显示为“意外参数”。

python pyqt
1个回答
2
投票

Support for Qt PropertiesPyQt5 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:

  • qproperties的初始化,和
  • 连接信号的插槽
© www.soinside.com 2019 - 2024. All rights reserved.