我正在尝试创建一个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打印值时它打印的方法无。
我想知道为什么会发生这种情况,是否有另一种方法可以将值返回到另一种方法?
答案 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 ...
未经测试,因此细节可能有误。