我用Tkinter在Python中制作了一个简单的组合框,我想检索用户选择的值。经过搜索,我认为可以通过绑定选择事件并调用一个函数来完成这个任务,该函数将使用类似于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())
有人可以告诉我如何获取所选值吗?
编辑:根据James Kent的建议,当将框绑定到函数时,我通过删除括号来更正了对justamethod的调用。但现在我遇到了这个错误:
TypeError:justamethod()需要恰好1个参数(给出2个)
编辑2:我已经发布了解决此问题的方法。
谢谢。
self.locationBox.bind
函数中,您通过在函数名称后面添加括号来调用该函数,去掉这些括号应该就可以正常工作。因此,请将self.justamethod()
更改为self.justamethod
。 - James KentTypeError
的原因是当事件被触发时,一个事件对象会作为参数之一传递给绑定的函数。如果您想查看可以从此对象获取的一些属性,请参阅此页面:http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm - James Kent