gpt4 book ai didi

python - pyqt:将信号与用户提供的变量动态连接?

转载 作者:行者123 更新时间:2023-12-01 06:11:02 27 4
gpt4 key购买 nike

我使用自定义类创建一个对话框:

d = ModifyRect(ctrl_name, rect_name)

它是无模式显示的。当它被接受或拒绝时,我想在我的主窗口上调用一个函数,传递这两个变量,即应该调用这个槽:

@QtCore.pyqtSlot("QString","QString")
def modifyRectAccepted(self, ctrl_name, rect_name):
#foo

如何将 daccepted 连接到我的 MainWindowmodifyRectAccepted,并传入那两个参数?或者甚至,连接两者,但至少传递 ModifyRect 实例,以便我可以从那里获取它们。

在 pygtk 中,这非常简单 - 您可以将更多变量传递到 connect 中,它们会被转发,并且在任何情况下,发出的小部件总是会传入。PyQt 中的等效概念是什么?

最佳答案

您不能直接这样做。您需要使用信号映射器或中间槽。请参阅this question几天前回答过。

或者,如果您只对信号源感兴趣,请使用 QObject 的 sender() 方法。

编辑:要将闭包用作中间槽,您必须使用 New-syle信号和槽范例。这种方式更加Pythonic,可以让你指定任何可调用的。像这样:

d = ModifyRect()

l = lambda: modifyRectAccepted(ctrl_name, rect_name)
d.accepted.connect(l)

def modifyRectAccepted(self, ctrl_name, rect_name):
#foo

关于python - pyqt:将信号与用户提供的变量动态连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876807/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com