我使用Tkinter在python中制作了一个简单的组合框,我想检索用户选择的值。搜索之后,我想可以通过绑定(bind)选择事件并调用将使用box.get()之类的函数来做到这一点,但这不起作用。程序启动时,将自动调用该方法,并且不会打印当前选择。当我从组合框中选择任何项目时,不会调用任何方法。这是我的代码片段:
self.box_value = StringVar()
self.locationBox = Combobox(self.master, textvariable=self.box_value)
self.locationBox.bind("<<ComboboxSelected>>", self.justamethod())
self.locationBox['values'] = ('one', 'two', 'three')
self.locationBox.current(0)
这是当我从框中选择一个项目时应该调用的方法:
def justamethod (self):
print("method is called")
print (self.locationBox.get())
谁能告诉我如何获得选定的值(value)?
编辑:我通过将框绑定(bind)到詹姆斯·肯特建议的函数时去掉了括号,更正了对justamethod的调用。但是现在我得到了这个错误:
TypeError:justamethod()恰好接受1个参数(给定2个)
编辑2:我已经发布了此问题的解决方案。
谢谢你。
最佳答案
我已经弄清楚代码中有什么问题。
首先,正如James所说的,将Justamethod绑定(bind)到组合框时应除去括号。
其次,关于类型错误,这是因为justamethod是事件处理程序,因此应采用两个参数,self和event,如下所示:
def justamethod (self, event):
进行这些更改后,代码可以正常运行。