如何将下拉值PyQT返回给另一个方法Python

时间:2015-12-11 03:25:31

标签: python combobox pyqt

我正在尝试创建一个PyQt下拉菜单(组合框),其值需要传递给另一个函数。 这是我的代码片段

def combo_box(self):
    combo = QtGui.QComboBox(self)
    ...#Filled in code here

    for i in range(0,len(arr)):
        combo.addItem(arr[i])

    #I want to get the value of the selected Drop-down content to be stored in value     
    value = combo.activated[str].connect(self.ComboValue)
    print value

def ComboValue(self,Text):
    print Text
    return Text

当我在 ComboValue 方法中打印变量文字时,它会正确打印,但是当我从 combo_box打印它打印的方法无。

我想知道为什么会发生这种情况,是否有另一种方法可以将值返回到另一种方法?

2 个答案:

答案 0 :(得分:0)

combo.activated [str] .connect(self.ComboValue)是信号,信号永远不会返回任何东西,所以这就是你得到无的原因。看看http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html

你可以使用这个值= str(combo.currentText()),但不知道你想要这个。

并将combo.activated [str] .connect更改为combo.currentIndexChanged [str] .connect以正确获取您的值

答案 1 :(得分:0)

创建组合框,然后等到用户激活项目:

def combo_box(self):
    combo = QtGui.QComboBox(self)
    ...#Filled in code here

    for i in range(0,len(arr)):
        combo.addItem(arr[i])

    combo.activated.connect(self.ComboValue)
    # save it and wait for user to do something:
    self.combo = combo  

def ComboValue(self, Text):
    # user has selected an item, save it:
    self.value = Text
    assert combo.currentText() == Text
    ... do something with it ...

未经测试,因此细节可能有误。