iT邦幫忙

2021 iThome 鐵人賽

DAY 7
2
自我挑戰組

一起用python寫UI系列 第 7

Day7 用python寫UI-聊聊標籤Label方法(二)

  • 分享至 

  • xImage
  •  

今天要主要會介紹幾個 widget 的共通方法,後面的部分會介紹如何在介面上加上圖片還有其他幾個實用的方法~

♠♣今天的文章大綱♥♦

  • widget的共通方法
  • 如何將影像放到介面上

widget的共通方法

  • config()
    首先,定義一個按鈕函數 clickHello(),處理 Hello 按鍵被按次數,用全域變數 count,記錄 Hello 按鍵被按次數,count 會隨著 Hello 被按次數增加,且透過呼叫元件 config() 函數更改標籤元件的文字內容
import tkinter as tk
root = tk.Tk()
root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
text=tk.Label(root, text="Hello\@^0^@/",font=("Bauhaus 93",20,"bold"))

count=0
def clickHello():
    global count
    count=count + 1
    text.config(text="Click Hello " + str(count) + " times")
B=tk.Button(root, text="Hello", command=clickHello,font=("Bauhaus 93",20,"bold"))

text.pack()
B.pack()

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047ZXeGheR0MQ.png
按按鈕後會自行加總:
https://ithelp.ithome.com.tw/upload/images/20210915/20140047PZiy9hYbHJ.png

  • keys()
    用串列list回傳widget所有的參數
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
text=tk.Label(root, text='I am Label',
              font="Times 25 bold") 
text.pack() 
print(type(text)) 

print(text.keys()) #回傳參數

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047C05MEjdwVP.png

  • wraplength()
    設定文字在多少像素後自動換行
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
text=tk.Label(root, text='I am Label',
              font="Times 25 bold",
              wraplength=40) #40像素後自動換行

text.pack() 
 

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047tG5Xc8dSsZ.png

  • justify 參數
    設定標籤內容是靠左、置中還是靠右,預設是置中
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
text=tk.Label(root, text='I am Label',
              font="Times 25 bold",
              wraplength=40,
              justify="right") #文字靠右

text.pack() 
 

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047Crj2KWWRwp.png

  • compound()參數
    同時有圖像與文字時,定義圖像與文字的位置
    left:圖在文字左側
    right:圖在文字右側
    top:圖在文字上面
    bottom:圖在文字下方面
    center:文字覆蓋在圖像上
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
text=tk.Label(root, text='I am Label',
              font="Times 25 bold",
              bitmap="question",
              compound="center") 

text.pack() 
 

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047AAijxKfunM.png

  • padx/pady
    padx:設定標籤文字左右的邊界與標籤區間的x軸間距離
    pady:設定標籤文字上下的邊界與標籤區間的y軸間距離
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')
text=tk.Label(root, text='I am Label',
              font="Times 25 bold",
              padx=15,pady=20) #左右間隔5,上下間隔10

text.pack() 
 

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047A4jXuUlLCu.png


如何將影像放到介面上

  • 在Python中使用Label組件加入Gif動態圖片
    imageobj=PhotoImage(file=”xxx.gif”)
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')

gif=tk.PhotoImage(file="7.gif")
text=tk.Label(root,image=gif)
text.pack() 
 
root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047sj8dIbFXxd.png

  • 在Python中使用Label組件加入Jpg圖片
    首先必須要用PIL的Image模組跟Image Tk模組
from PIL import Image,ImageTk
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')

image=Image.open("five.jpg")
five=ImageTk.PhotoImage(image)
text=tk.Label(root,image=five)
text.pack() 
 
root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047dgTZodv6lT.png

  • 在Python中使用Label組件加入圖片與文字
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')

lyrics="""This is my fight song
Take back my life song
Prove I'm alright song
My power's turned on
Starting right now I'll be strong
I'll play my fight song
And I don't really care if nobody else believes
'Cause I've still got a lot of fight left in me"""#文字內容

gif=tk.PhotoImage(file="7.gif")#圖片
text=tk.Label(root, image=gif,text=lyrics,bg="#F5F5DC",
              compound="left", fg="#556B2F",
              font=("Viner Hand ITC", 12, "bold", "italic"))
text.pack()

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047W4bx88fpn2.png

❗❗❗ 重要提醒:如果bitmap參數跟image參數同時存在,bimap參數會沒有用 ❗❗❗

  • Separator分隔線
from tkinter.ttk import Separator #導入模組
import tkinter as tk
root = tk.Tk()

root.title('cuteluluWindow')
root.configure(bg="#7AFEC6")
root.iconbitmap('heart_green.ico')

Title="FIGHT SONG"
Content="""This is my fight song
Take back my life song
Prove I'm alright song
My power's turned on
Starting right now I'll be strong
I'll play my fight song
And I don't really care if nobody else believes
'Cause I've still got a lot of fight left in me"""


text1=tk.Label(root,text=Title,bg="#F5F5DC",
              compound="left",fg="#556B2F",
              font=("Viner Hand ITC",18,"bold"))
text1.pack(padx=5,pady=5)

sep=Separator(root,orient=tk.HORIZONTAL) #分隔線
sep.pack(fill='x',padx=7)

text2=tk.Label(root,text=Content,bg="#F5F5DC",
              compound="left",fg="#556B2F",
              font=("Viner Hand ITC",12,"bold","italic"))
text2.pack(padx=5,pady=5)

root.mainloop()

下圖為執行結果⬇⬇⬇
https://ithelp.ithome.com.tw/upload/images/20210915/20140047Kn4qBHWUEg.jpg


Label 的部分就在今天結束了~明天會進入功能鈕的部分,有問題都可以留言一起討論喔(。・∀・)ノ゙

/images/emoticon/emoticon07.gif


上一篇
Day6 用python寫UI-聊聊標籤Label方法(一)
下一篇
Day8 用python寫UI-聊聊功能鈕Button
系列文
一起用python寫UI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
lutrainee
iT邦新手 5 級 ‧ 2021-10-29 09:24:05

標籤Label的教學非常詳細,對新手助益良多,而且節省很多摸索前進的寶貴時間,謝謝前輩啦!

Firenze iT邦新手 5 級 ‧ 2021-11-01 15:55:01 檢舉

/images/emoticon/emoticon07.gif

我要留言

立即登入留言