iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
自我挑戰組

學點Python GUI再隨便做點事吧系列 第 11

使用Label讓小程式更好用

import tkinter as tk
import random
win=tk.Tk()
win.geometry("200x100")
win.attributes("-toolwindow", 1)

以上這段已經解釋過了,就不再贅述了。

import tkinter as tk
import random
win=tk.Tk()
win.geometry("200x100")
win.attributes("-toolwindow", 1)

以上這段已經解釋過了,就不再贅述了。

win.title("隨機顏色產生器")#將視窗標題設為固定名稱。

stringvar = tk.StringVar()
當我們想要改變label中的文字時,有兩種方式可以使用,一種是如之前所說的,利用config(text=’’)去改變。另一種是利用變數的方式,先新增一個變數stringvar代表我們將要儲存的color字串值,stringvar的內容為tk.StringVar()
整行程式的內容就是,將tk模組中的StringVar()函式變成一個叫做stringvar的變數。
至於StringVar()的作用想必大家看名稱就很清楚了。

def randomcolor():```
    colorArr = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    color = ""
    for i in range(6):
        color += colorArr[random.randint(0,14)]
    label.config(bg="#"+color)

以上這段已經解釋過了,就不再贅述了。

if color=="000000":
在我們上一個版本的程式中,因為色碼是顯示在視窗標題上,所以不會遇到文字顏色與背景顏色相同的狀況,但是現在顯示的地方改為Label了,必須要考慮到兩者顏色相同的狀況。
首先,文字的顏色為黑色,因此目前需要考慮到的狀況只有背景為黑色時才需要將兩者顏色進行區分。
白色的色碼為000000,所以當偵測到color的值為000000時,將進入這個判斷式。
label.config(fg='#FFFFFF')#將文字顏色設為白色。
stringvar.set("#"+color)
若我們要改變StringVar()的值,需要使用set函式才能給予值。

label=tk.Label(textvariable=stringvar,width=15,height=3)
最重要的地方在這裡,必須讓textvariable=stringvar,否則stringvar的值將不會傳送到label的textvariable上。
label.pack()

button=tk.Button(text="點擊隨機產生顏色",width=15,height=1)
button.config(command=randomcolor)
button.pack()
win.mainloop()

以上這段已經解釋過了,就不再贅述了。


上一篇
今天拍完社博還要來寫Label設定介紹,好想死,而且明天早八。
系列文
學點Python GUI再隨便做點事吧11

尚未有邦友留言

立即登入留言