在组合框中选择country后,如何从town_label1和street_label1获取textvariable的值?比利时的F.E town_label1应为“布鲁塞尔”,street_label1的F.E应为"red_boulevard“。
当我在funtcion中打印它时,它工作得很好,但我需要在函数外部使用那些动态值
当我使用.get()方法时给我函数,当我尝试打印函数时,函数会询问我函数参数。我在.bind()中使用了lambda,但它只允许4个参数,而且我需要更多参数,因为“镇”和“街”将不是后面唯一的关键字。
import tkinter as tk
import tkinter.ttk as ttk
#DICTIONARIES#
materialDict = {"": {"town": 0, "street": 0},
"Belgium": {"town": "Brussels", "street": "red_boulevard"},
"Germany": {"town": "Bremen", "street": "green_boulevard"}}
#FUNCTION#
def selected(func):
a = materialDict [main.get()]["town"]
town.set(a)
c = materialDict [main.get()]["street"]
street.set(c)
#WINDOWLOOP#
root = tk.Tk()
root.geometry("250x125")
#VARIABLES#
main = tk.StringVar()
town = tk.StringVar()
street = tk.StringVar()
#COMBOBOXES#
combobox = ttk.Combobox(root, height=5, state="readonly", values=list(materialDict.keys()), textvariable=main)
combobox.place(x=10, y=10, width=130)
combobox.bind('<<ComboboxSelected>>', func=selected)
#LABELS#
town_label = tk.Label(root, text='town:')
town_label.place(x=150, y=10, width=70, height=20)
street_label = tk.Label(root, text='street:')
street_label.place(x=150, y=70, width=70, height=20)
town_label1 = tk.Label(root, textvariable=town)
town_label1.place(x=155, y=30, width=100, height=20)
street_label1 = tk.Label(root, textvariable=street)
street_label1.place(x=155, y=90, width=100, height=20)
root.mainloop()发布于 2021-07-21 00:36:03
当您调用town_label1.cget("textvariable")时,它将返回变量的内部名称,而不是变量本身。Tkinter提供了一个名为getvar的方法,用于按名称获取变量的值。
varname = town_label1.cget("textvariable")
value = town_label1.getvar(varname)
print(f"value: {value}")https://stackoverflow.com/questions/68458325
复制相似问题