我正在嘗試找到一種方法來獲取 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)
有沒有辦法在這個函式之外得到它?這只是我的一個想法,但正如我所提到的,它不起作用......
uj5u.com熱心網友回復:
您需要 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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491110.html
