tk中下拉列表使用ttk.Combobox臼朗,代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
win = tk.Tk()
win.title("Python GUI") # 添加標題
ttk.Label(win, text="Chooes a number").grid(column=1, row=0) # 添加一個標簽,并將其列設(shè)置為1伯复,行設(shè)置為0
ttk.Label(win, text="Enter a name:").grid(column=0, row=0) # 設(shè)置其在界面中出現(xiàn)的位置 column代表列 row 代表行
# button被點擊之后會被執(zhí)行
def clickMe(): # 當acction被點擊時,該函數(shù)則生效
action.configure(text='Hello ' + name.get()) # 設(shè)置button顯示的內(nèi)容
action.configure(state='disabled') # 將按鈕設(shè)置為灰色狀態(tài)鼠次,不可使用狀態(tài)
# 按鈕
action = ttk.Button(win, text="Click Me!", command=clickMe) # 創(chuàng)建一個按鈕, text:顯示按鈕上面顯示的文字, command:當這個按鈕被點擊之后會調(diào)用command函數(shù)
action.grid(column=2, row=1) # 設(shè)置其在界面中出現(xiàn)的位置 column代表列 row 代表行
# 文本框
name = tk.StringVar() # StringVar是Tk庫內(nèi)部定義的字符串變量類型更哄,在這里用于管理部件上面的字符芋齿;不過一般用在按鈕button上。改變StringVar成翩,按鈕上的文字也隨之改變觅捆。
nameEntered = ttk.Entry(win, width=12, textvariable=name) # 創(chuàng)建一個文本框,定義長度為12個字符長度麻敌,并且將文本框中的內(nèi)容綁定到上一句定義的name變量上栅炒,方便clickMe調(diào)用
nameEntered.grid(column=0, row=1) # 設(shè)置其在界面中出現(xiàn)的位置 column代表列 row 代表行
nameEntered.focus() # 當程序運行時,光標默認會出現(xiàn)在該文本框中
# 創(chuàng)建一個下拉列表
number = tk.StringVar()
numberChosen = ttk.Combobox(win, width=12, textvariable=number)
numberChosen['values'] = (1, 2, 4, 42, 100) # 設(shè)置下拉列表的值
numberChosen.grid(column=1, row=1) # 設(shè)置其在界面中出現(xiàn)的位置 column代表列 row 代表行
numberChosen.current(0) # 設(shè)置下拉列表默認顯示的值,0為 numberChosen['values'] 的下標值
win.mainloop() # 當調(diào)用mainloop()時,窗口才會顯示出來
執(zhí)行代碼結(jié)果如圖:
52490873.png
注:
- 程序執(zhí)行下拉框中默認顯示的值由下面代碼實現(xiàn)
nameEntered.focus() # 當程序運行時,光標默認會出現(xiàn)在該文本框中
- 在這里下拉框中還可以直接輸入一個值术羔,如果不希望這個地方可以輸入值赢赊,可以在創(chuàng)建的時候添加一個參數(shù):
state='readonly' # 將下拉列表設(shè)置成為只讀模式
# 完整代碼如下:
numberChosen = ttk.Combobox(win, width=12, textvariable=number, state='readonly')
修改代碼,需求是當點擊button按鈕時级历,button上面顯示的字符串是文本框和下拉列表顯示的字符串的拼接释移,只需要修改一下clickMe函數(shù)就可以了,代碼如下:
def clickMe(): # 當acction被點擊時,該函數(shù)則生效
action.configure(text='Hello ' + name.get() + ' ' + numberChosen.get()) # 設(shè)置button顯示的內(nèi)容
代碼執(zhí)行結(jié)果如圖:
54272903.png