組合框 Combobox 簡介
Combobox 可以翻譯爲組合框
,這是tkinter.ttk
的 Widget控件,它的特性與OptionMenu類似,可以說它是Entry和下拉菜單的組合,構造方法如下
Combobox(父對象, options)
參數:
- 第一個參數:
子組件
,表示這個組合框將建立在哪一個窗口內 - 第二個參數:
options
,參數如下
參數 | 含義 |
---|---|
textvariable | 可以設置Combobox 的變量值 |
value | Combobox 的選項內容 以元組方式存在 |
建立 Combobox
在 Combobox()的構造方法中,可以使用Value 參數建立選項內容
例子
:
import tkinter
import tkinter.ttk
root = tkinter.Tk()
var = tkinter.StringVar()
combobox = tkinter.ttk.Combobox(root, textvariable=var, value=('python', 'java', 'C', 'C++'))
combobox.pack(padx=5, pady=10)
root.mainloop()
運行結果:
若是選項很多,可以使用獨立在Combobox()外來處理
例子
:
combobox = tkinter.ttk.Combobox(root, textvariable=var)
combobox['value'] = ('python', 'java', 'C', 'C++')
運行結果與上面相同
設置默認選項 current()
例子
:
import tkinter
import tkinter.ttk
root = tkinter.Tk()
var = tkinter.StringVar()
combobox = tkinter.ttk.Combobox(root, textvariable=var)
combobox['value'] = ('python', 'java', 'C', 'C++')
combobox.current(0)
combobox.pack(padx=5, pady=10)
root.mainloop()
運行結果:
或者可以使用var.set()
方法來設置,但是相比而言還是current()
比較便利
例子
:
var.set(combobox['value'][0])
# combobox.current(0)
運行結果一樣
獲得目前選項 get()
例子
:
import tkinter
import tkinter.ttk
def show():
# 使用var.get()來獲得目前選項內容
varLabel.set(var.get())
root = tkinter.Tk()
var = tkinter.StringVar()
combobox = tkinter.ttk.Combobox(root, textvariable=var)
combobox['value'] = ('python', 'java', 'C', 'C++')
combobox.current(0)
combobox.pack(padx=5, pady=10)
varLabel = tkinter.StringVar()
label = tkinter.Label(root, textvariable=varLabel, width=20, height=3, bg='lightblue', fg='red')
label.pack()
button = tkinter.Button(root, text='print', command=show)
button.pack()
root.mainloop()
運行結果:
綁定 Combobox
當Combobox 中的選項有變動時,會產生虛擬事件<<ComboboxSelected>>
,可以使用這個特性將此事件綁定處理方法
例子
:
import tkinter
import tkinter.ttk
def show(event):
# 使用var.get()來獲得目前選項內容
varLabel.set(var.get())
root = tkinter.Tk()
var = tkinter.StringVar()
combobox = tkinter.ttk.Combobox(root, textvariable=var)
combobox['value'] = ('python', 'java', 'C', 'C++')
combobox.current(0)
combobox.bind('<<ComboboxSelected>>', show)
combobox.pack(side=tkinter.LEFT, padx=5, pady=10)
varLabel = tkinter.StringVar()
label = tkinter.Label(root, textvariable=varLabel, width=6, bg='lightblue', fg='red')
label.pack(side=tkinter.LEFT)
root.mainloop()
運行結果:
謝謝觀看,筆者會持續更新,如有錯誤或者建議,請私信我