1. 程式人生 > >GUI的最終選擇 Tkinter(二):Label和Button元件

GUI的最終選擇 Tkinter(二):Label和Button元件

Label元件

Lable元件是用於介面上輸出描述的標籤,例如提示使用者“您下載的電影含有未成年人限制內容,請滿18歲以後點選觀看!”,先來上結果圖:

在來看下它的程式碼:

from tkinter import *

root = Tk()
#建立一個文字Label物件
textLable = Label(root,\
                  text='您所下載的影片含有未成年限制內容,\n請滿18歲再檢視')
textLable.pack(side=LEFT)
photo = PhotoImage(file='18.gif')
imglable 
= Label(root,image=photo) imglable.pack(side=RIGHT) mainloop()

 顯示不太好看,所以我們修改下,在字串中使用\n對顯示的文字進行換行

如果想將文字部分左對齊,並在水平位置與邊框留有距離,只要設定Label的justify和padx選項即可。

 完整程式碼如下:

from tkinter import *

root = Tk()
#建立一個文字Label物件
textLable = Label(root,\
                  text='您所下載的影片含有未成年限制內容,\n請滿18歲再檢視
',\ justify=LEFT,\ padx=10) textLable.pack(side=LEFT) photo = PhotoImage(file='18.gif') imglable = Label(root,image=photo) imglable.pack(side=RIGHT) mainloop()

這是圖片和文字分開的,但是有時候需要文字顯示在圖片的上面,那麼我們只需要設定compound選項即可。

 1 from tkinter import *
 2 
 3 root = Tk()
4 photo = PhotoImage(file='bg.gif') 5 thelable = Label(root, 6 text = 'study python', 7 justify=LEFT, 8 image= photo, 9 compound=CENTER, 10 font=('宋體',20), 11 fg='white') 12 thelable.pack() 13 mainloop()

結果圖:

Button元件

Button元件是用於實現一個按鈕,它的絕大多數選項和Label元件是一樣的,不過Button元件有一個Label元件實現不了的功能,那就是可以接收使用者的資訊。Button元件有一個command選項,用於指定一個函式或方法,當用戶單擊按鈕的時候,Tkinter就會自動地呼叫這個函式或方法。

來我們修改上面的Label的那個例子,增加一個按鈕,在按鈕被單擊後Label文字發生改變。想要文字發生改變,只需要設定textvariable選項為Tkinter變數即可:

 1 #
 2 from tkinter import *
 3 
 4 def callback():
 5     var.set('我才不信了,騙子')
 6 
 7 root = Tk()
 8 frame1 = Frame(root)
 9 frame2 = Frame(root)
10 var = StringVar()
11 var.set('您所下載的影片含有未成年限制內容,\n請滿18歲再檢視')
12 textLable = Label(frame1,
13                   textvariable=var,
14                   justify=LEFT)
15 textLable.pack(side=LEFT)
16 
17 photo = PhotoImage(file='18.gif')  #用PhotoImage例項化一個圖片物件,注:支援gif的
18 imglable = Label(root,image=photo)  #建立一個影象Label的物件
19 imglable.pack(side=RIGHT)
20 
21 theButton = Button(frame2,text='我已經滿18歲',command=callback) #增加一個按鈕
22 theButton.pack()
23 
24 frame1.pack(padx=10,pady=10)
25 frame2.pack(padx=10,pady=10)
26 mainloop()

結果如下:我這裡放兩張圖片了