Tkinter Combobox 没有获得价值

Tkinter Combobox dont get value

我也成功地将组合框应用于新的 window。但是通过get()函数获取组合框的值失败。

win = tk.Tk()

win.title("win1")
def com():
    win2 = tk.Tk()
    win2.grab_set()
    win.title("win2")
    r_location_value = tk.StringVar()
    location = ttk.Combobox(win2, width=8, textvariable=r_location_value,
                            values=["a", "b", "c", "d", "e", "f", "g", "h", "i","j"])
    v = r_location_value.get()
    print(r_location_value.get())
    def tt():
        v = r_location_value.get()
        print(v)
    
    location.current(0)
    location.pack()
    Button = tk.Button(win2,text="click",command = tt)
    Button.pack()
Button = tk.Button(win,text="click",command = com)
Button.pack()
win.mainloop()

为了解决这个问题,我创建了一个新变量并尝试放入 get() 值,但失败了。

正如评论中提到的其他一些人,我不能说我会推荐这种结构 - 但是我确实有解决您问题的方法。

在您的 tt() 函数中使用以下内容来打印选择:

print(location.get())

这是在获取与组合框关联的值。如果您得到的是 StringVar,它实际上并没有抓住您想要的东西。或者,您可以使用连接到字典的 OptionBox,然后您将获得要打印的 StringVar 和关联值。希望这对您有所帮助。

win = tk.Tk()

win.title("win1")
def com():
    win2 = tk.Tk()
    win2.grab_set()
    win.title("win2")

    r_location_value = tk.StringVar()
    location = ttk.Combobox(win2, width=8, textvariable=r_location_value, values=["A", "B", "C"])


    def tt():
        print(location.get())
    
    location.current(0)
    location.pack()
    Button = tk.Button(win2, text="click", command = tt)
    Button.pack()

Button = tk.Button(win, text="click",command = com)
Button.pack()

win.mainloop()