gpt4 book ai didi

python - PyQt - QComboBox 连接已确认但未调用函数

转载 作者:行者123 更新时间:2023-11-28 22:57:08 24 4
gpt4 key购买 nike

我在使用 PyQt 时遇到信号/槽问题。我的代码在下面,但它可能值得一些解释。前两个 QObject.connect() 返回 True,所以我知道连接已建立。但是,当更改组合框中的选择时,函数 getParameters 未按预期调用。下面的 5 个连接用于调试和测试与 ComboBox 关联的其他信号。那些也不会按预期打印日志。

从我读到的其他内容来看,有更新的方法来指定连接,这可能是问题所在吗?如果是这样,有人可以给我一个这种格式的例子吗?谢谢!

#interactive GUI connections:
resultCombo = QObject.connect(self.dlg.ui.comboBox, SIGNAL("currentIndexChanged(const QString & text)"), self.getParameters)
resultSpin = QObject.connect(self.dlg.ui.spinBox_bands, SIGNAL("valueChanged(int i)"), self.getParameters)
QMessageBox.information( self.iface.mainWindow(),"Info", "connections: ComboBox = %s SpinBox = %s"%(str(resultCombo), str(resultSpin)) )
QObject.connect(self.dlg.ui.comboBox, SIGNAL("currentIndexChanged(const QString & text)"), self.log1)
QObject.connect(self.dlg.ui.comboBox, SIGNAL("currentIndexChanged(int index)"), self.log2)
QObject.connect(self.dlg.ui.comboBox, SIGNAL("currentTextChanged(const QString & text)"), self.log3)
QObject.connect(self.dlg.ui.comboBox, SIGNAL("highlighted(const QString & text)"), self.log4)
QObject.connect(self.dlg.ui.comboBox, SIGNAL("activated(const QString & text)"), self.log5)

def log1(self, input):
QgsMessageLog.logMessage("currentIndexChanged string. input = " + str(input), "Debug", 0)
def log2(self, input):
QgsMessageLog.logMessage("currentIndexChanged int. input = " + str(input), "Debug", 0)
def log3(self, input):
QgsMessageLog.logMessage("currentTextChanged string. input = " + str(input), "Debug", 0)
def log4(self, input):
QgsMessageLog.logMessage("highlighted string. input = " + str(input), "Debug", 0)
def log5(self, input):
QgsMessageLog.logMessage("cactivated string. input = " + str(input), "Debug", 0)

最佳答案

我解决了。正如我所猜测的,它确实与“新式”连接语法有关。我不完全确定为什么旧样式是连接的,而不是调用连接的函数,但它现在正在使用以下代码:

    self.dlg.ui.comboBox.currentIndexChanged['QString'].connect(self.getParameters)
self.dlg.ui.spinBox_bands.valueChanged.connect(self.getParameters)

对于那些不知道的人(我没有也找不到好的文档 - 链接?),['QString'] 参数允许您为重载信号选择结果类型。这对我很重要,因为我使用类型来区分发件人。但是,我想我应该更明确地使用

sender = self.sender()

在我的 getParameters 函数中,但这是有效的。

关于python - PyQt - QComboBox 连接已确认但未调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14659646/

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