label元件在tkinter中算是十分基礎的了。label主要用來顯示不可更改的文字資訊,在程式ui中作為資訊指示控制項使用。
使用畫布畫出label也是十分簡單,思路與繪製按鈕一樣。
由於過於簡單,直接在tinui類下加上這樣乙個函式:
def
add_label
(self,pos:
tuple
,text:
str,fg=
'black'
,bg=
'#f0f0f0'
,outline=
'grey'
,font=
('微軟雅黑',12
)):#繪製標籤
''' pos::位置
text::文字
fg::前景色
bg::背景色
outline::邊框顏色
font::字型
'''label=self.create_text(pos,text=text,fill=fg,font=font,anchor=
'nw'
) bbox=self.bbox(label)
x1,y1,x2,y2=bbox[0]
-3,bbox[1]
-3,bbox[2]
+3,bbox[3]
+3back=self.create_rectangle(
(x1,y1,x2,y2)
,fill=bg,outline=位置)
self.tkraise(label)
return label
由此看來,tinui繪製label實際上就是在繪製文字的基礎上,加上乙個背景顏色、邊框而已。
這只是引子。
這是tinui最為核心的內容。
以繪製label為例。
為什麼我們不先繪製矩形,使矩形在下方?而且,tkinter的畫布還有insert
函式,可以插入文字。
因為我們需要追求更加靈活的排版。
關於元素覆蓋這一方面,tinui採取的排版方式步驟如下:
先繪製無法直接得出佔位的元素,如文字、等
獲取先繪製元素的佔位情況,使用bbox
函式
繪製佔位(尺寸)可控的元素
調整元素層次顯示
在add_label
中體現如下:
#繪製無法確定尺寸的文字
label=self.create_text(pos,text=text,fill=fg,font=font,anchor=
'nw'
)#獲取文字尺寸
bbox=self.bbox(label)
#算出背景矩形的合適尺寸
x1,y1,x2,y2=bbox[0]
-3,bbox[1]
-3,bbox[2]
+3,bbox[3]
+3#繪製矩形背景
back=self.create_rectangle(
(x1,y1,x2,y2)
,fill=bg,outline=位置)
#調整元素層次
self.tkraise(label)
return label
在tinui以後的完善中,也會採取類似的排版思想。對於其它的情況,也會根據實際發展出不同的排版思想。
這裡優化了重新整理滾動,如果有更好的介面滾動功能,可以在下面的github位址中新增或改進。
tinui的github專案位址
接下來將完成checkbutton。
?tkinter創新?
tkinter 常用元件widegets
from tkinter.messagebox import from tkinter import root tk imglabel label root,image photo,text 初春的雪!把整合到標籤類中 imglabel.pack side right 自動對齊 tl this is...
Tkinter 元件詳解 Toplevel
toplevel 頂級視窗 元件類似於 frame 元件,但 toplevel 元件是乙個獨立的頂級視窗,這種視窗通常擁有標題欄 邊框等部件。何時使用 toplevel 元件?toplevel 元件通常用在顯示額外的視窗 對話方塊和其他彈出視窗上。用法下邊例子中,我們在 root 視窗新增乙個按鈕用...
Tkinter 元件詳解(四) Entry
使用 為 entry 元件新增文字,可以使用 insert 方法。import tkinter as tk master tk.tk e tk.entry master e.pack padx 20,pady 20 e.delete 0,end e.insert 0,預設文字.獲取當前輸入框的文字,...