tkinter从没有按钮的组合框中获取选中的元素



我正试图找到一种方法来获得tkinter组合框所选元素而不使用按钮,或者从按钮中的命令中获取值,但是到目前为止没有任何东西适合我。

下面是一个示例代码(这不起作用):

def show_frame(frame, prev_frame):
selected_elem = combobox.get()
if selected_elem == "choose element":
label = Label(frame1, text="please choose an element!")
label.grid(row=4, column=0)
else:
prev_frame.grid_forget()
frame.grid(row=0, column=0, sticky='nsew')
return selected_elem
elem= ""
button = Button(frame1, text="enter", command=lambda: elem==show_frame(frame3, frame1))
button.grid(row=2, column=1, padx=10, pady=10)

是否有一种方法可以在这个函数之外获得它?这只是我的一个想法,但正如我提到的,它不起作用…

您需要bind方法来监视选定的元素:

import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.title("Combobox")
selected_elem = tk.StringVar(value='value1')
combobox = ttk.Combobox(root, textvariable=selected_elem)
combobox['values'] = ('value1', 'value2', 'value3')
combobox.pack(fill=tk.X, padx=20, pady=20)
myLabel = tk.Label(root, text=selected_elem.get())
myLabel.pack()
# prevent typing a value
combobox['state'] = 'readonly'
# place the widget
combobox.pack(fill=tk.X, padx=5, pady=5)

# bind the selected value changes
def value_changed(event):
""" handle the value changed event """
myLabel.configure(text=selected_elem.get())
myLabel.pack()

combobox.bind('<<ComboboxSelected>>', value_changed)
root.mainloop()

更多信息在这里:https://www.pythontutorial.net/tkinter/tkinter-combobox/

最新更新