1. 程式人生 > >10.2Python圖形使用者介面庫tkinter(2):認識常見控制元件

10.2Python圖形使用者介面庫tkinter(2):認識常見控制元件

# 本類展示了Checkbutton、Radiobutton、Entry、Message、Label、Text的使用方式
# 並使用表格佈局將它們佈局在介面中
class WidgetDemo():
    def __init__(self):
        # 視窗和標題
        window = Tk()
        window.title("Widgets Demo")

        # 使用面板並新增到視窗
        frame1 = Frame(window)
        frame2 = Frame(window)
        frame1.pack()
        frame2.pack()

        # 構造Checkbutton並繫結資料和監聽
self.cbValue = IntVar() cb = Checkbutton( frame1, text="Bold", # 將狀態儲存於cbValue,將勾選或取消事件交給onCheckbuttonChanged函式 variable=self.cbValue, command=self.onCheckbuttonChanged ) # 構造Radiobutton並繫結資料和監聽 # 將兩個Radiobutton置為一個單選按鈕組 self.rbValue = IntVar() rb1 = Radiobutton( frame1, text="Red"
, background="Red", # 將單選按鈕組的當前選項儲存於rbValue,當前紅色單選框的值設定為1 # 單選按鈕組狀態發生變化時,由onRadioButtonChange函式進行處理 variable=self.rbValue, value=1, command=self.onRadioButtonChange ) rb2 = Radiobutton( frame1, text="Yellow", background="Yellow"
, variable=self.rbValue, value=2, command=self.onRadioButtonChanged ) rb3 = Radiobutton( frame1, text="Blue", background="blue", variable=self.rbValue, value=3, command=self.onRadioButtonChanged ) # 表格佈局控制元件,不必再pack cb.grid(row=1, column=1) rb1.grid(row=1, column=2) rb2.grid(row=1, column=3) rb3.grid(row=1, column=4) # 標籤 lable = Label(frame2, text="Enter your name") # 輸入框及資料繫結 self.entryValue = StringVar() entry = Entry(frame2, textvariable=self.entryValue) # Message btnGet = Button(frame2, text="Get Name", command=self.onBtnGetnameClick) msg = Message(frame2, text="its a msg") # 將控制元件以行列形式佈局在介面中,不必再pack lable.grid(row=1, column=1) entry.grid(row=1, column=2) btnGet.grid(row=1, column=3) msg.grid(row=1, column=4) # 文字域,插入文字內容 text = Text(window, width=50, height=10) text.insert(END, "Abcdefg\n") text.insert(END, "Hijklmn\n") text.insert(END, "Okqrst\n") text.pack() window.mainloop() # Checkbutton的事件監聽函式,從繫結的資料中獲取資料 def onCheckbuttonChanged(self): print(self.cbValue.get()) print("onCheckbuttonChanged:" + ("checked" if self.cbValue.get() == 1 else"unchecked")) pass # RadioButton的單選事件監聽 def onRadioButtonChanged(self): print("您當前選中的是%d號Radiobutton" % (self.rbValue.get())) # print("onRadioButtonChanged:" + ("rb1" if self.rbValue.get() == 1 else"rb2")) pass # 按鈕的事件監聽,獲取Entry所繫結的資料 def onBtnGetnameClick(self): print(self.entryValue.get()) pass

執行效果
這裡寫圖片描述