我使用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):

进行这些更改后,代码可以正常运行。

09-27 22:00