Python之tkinter 組合框 Combobox

組合框 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()

運行結果:
在這裏插入圖片描述

謝謝觀看,筆者會持續更新,如有錯誤或者建議,請私信我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章