获得Combobox python的选定值

时间:2017-11-18 21:29:09

标签: python tkinter combobox

您好我有以下代码

def create(self):
    geo = StringVar()
    city = ttk.Combobox(gui, textvariable=geo,state="readonly")
    city.config(values=self.geo)
    city.pack()
    city.bind("<<ComboboxSelected>>", self.cityselection)


def cityselection(self,event):
    selected=event
    print(selected)

我想将选定的值从Combobox发送到cityselection函数但是当我打印它时我只得到

  

VirtualEvent事件x = 0 y = 0

并且无论我选择哪个值都无关紧要我将始终获得上述输出例如:伦敦或多伦多,

2 个答案:

答案 0 :(得分:1)

这对我有用:

def create(self):
        print(self.geo)
        strgeo="\n".join(str(x) for x in self.geo)

        print(strgeo)
        city = ttk.Combobox(gui, textvariable=self.stringGeo, state="readonly",width=30)
        city.config(values=strgeo)
        city.pack()
        city.bind("<<ComboboxSelected>>",self.selectedCity)

    def selectedCity(self,event):
        selected=self.stringGeo.get()

答案 1 :(得分:0)

目前,您无法检索geo的值,因为它未定义为您的类的属性,而是在create的本地范围内。您可以做的是将geo声明为静态属性,然后在您需要时从您的方法中调用它。

class(object):

    geo = StringVar()
    geos = ('NY','LA','RY','...')

    def __init__(self,#....
        #...

    def create(self):
        city = ttk.Combobox(gui, textvariable=self.geo,state="readonly")
        city.config(values=self.geos) 
        city.pack()
        city.bind("<<ComboboxSelected>>", self.cityselection)


    def cityselection(self,event):
        selected=self.geo.get()
        print(selected)

实际上,event并非您认为的那样。