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

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

rom 設置 bubuko png 創建 ont gui 發生 pac

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()

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

技術分享圖片技術分享圖片

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