2

我正在使用 pyQT 4.8.3 为 QGIS 插件创建适当的 GUI

表单中有三个小部件

my_comboBox , my_lineEdit , my_spinBox

假设 comboBox 有三个条目

'combo_first_item' , 'combo_second_item' , 'combo_third_item'

我到底想要什么;

if 'combo_second_item' is selected, then my_lineEdit toggles state to disabled
if 'combo_third_item' selected, then my_spinBox toggles state to disabled

那么,如何根据从组合框中选择的字符串(或索引值)来切换表单中小部件的启用状态?

什么应该是正确的信号-> 插槽分配?与 QbuttonBox 不同,QcomboBox 不会触发 SetDisabled 插槽

谢谢。

4

1 回答 1

4

制作一个将字符串映射到小部件的字典:

widgets = {'combo_first_item': my_comboBox,
           'combo_second_item': my_lineEdit,
           'combo_third_item': my_spinBox}

还有一个插槽:

def disableWidget(currentIndex):
     widget = widgets[currentIndex]
     widget.setEnabled(False)
     # or anything else you want to do on the widget

然后你可以将currentIndexChanged[QString]信号连接到这个:

comboBox.currentIndexChanged['QString'].connect(disableWidget)

或者,您可以使用currentIndexChanged[int]和列表而不是字典。

PS:如果这是在类实例中,请self相应放置。

于 2013-01-26T22:45:53.410 回答