Tkinter教程之Label篇


本文轉載自:http://blog.csdn.net/jcodeer/article/details/1811293

#Tkinter教程之Label篇
'''1.Label的第一個例子
text屬性使用方法
'''
#要使用Tk模塊,除非你不想使用這個模塊,那整個教程就不需要看了
from Tkinter import *
#初始化Tk
root = Tk()
#創建一個label,使用編碼,到現在為止還沒有使用過直接通過“drag-and-drop”就可以完成的IDE。
label = Label(root,text = 'Hello Tkinter')
#顯示label,必須含有此語句
label.pack()
#root.pack()
#但root是不需要(嚴格地說是必須不這樣使用),否則解釋器抱怨
#進入消息循環
root.mainloop()
#控件的顯示步驟:
#1.創建這個控件
#2.指定這個空間的master,即這個控件屬於哪一個
#3.告訴GM(geometry manager)有一個控件產生了
'''
還有更簡單的一個例子:將‘Hello Tkinter’打印到標題上,Label也不用創建了
from Tkinter import *
root = Tk()
root.title('hello Tkinter')
root.mainloop()
再沒法兒簡化了,就這樣吧
'''
'''2.在label上使用內置位圖
bitmap的使用方法
'''
from Tkinter import *
#初始化Tk
root = Tk()
#創建一個label,使用編碼,到現在為止還沒有使用過直接通過“drag-and-drop”就可以完成的IDE。
label = Label(root,bitmap = 'error')
#上面的代碼使用了內置位圖error

#顯示label,必須含有此語句
label.pack()

#進入消息循環
root.mainloop()
'''
其他可用的位圖:
    * error
    * hourglass
    * info
    * questhead
    * question
    * warning
    * gray12 
    * gray25 
    * gray50
    * gray75
若要查看各自的效果,可以使用相應的名稱將bitmpa = 'error'替換。
據說還可以使用自己指定的位圖文件,網上找了一下,格式如下:
    Label(root, bitmap="@/path/bitmapname")
不過我試了一下,從來沒有成功過,我已經將位圖該為單色的了:(

另:還有的網上的文章說明如何使用PhotoImage和BitmapImage顯示bmp或gif文件,提到一點
防止圖像文件被python自動回收(garbage collected),應將bmp或gif放到全局(global)或實體
(instance)中,使用如下兩種方法,仍未奏效:
'''
#使用image屬性
#    bm = PhotoImage(file = 'c:/python.gif')
#    label = Label(root,image = bm)
#    label.bm = bm
#錯誤信息:
#TclError: image "pyimageXX" doesn't exist
#使用bitmap屬性
#    bm = BitmapImage(file='c:/python2.bmp')
#    label = Label(root,bitmap=bm)
#    label.bm = bm
#    label.pack()
#錯誤信息:
#TclError: format error in bitmap data
'''
雖然二者均沒有起作用,還是要說明一下,bitmap與image的關系,如果同時指定這兩參數,image
優先。
'''
'''3.改變控件的前景色和背景色
fg:前景色
bg:背景色
設置背景色的一個大的用處是:可以判斷控件的大小(不同的控件使用不同的顏色,后續內容
可以使用此特性來調試container)
'''
from Tkinter import *
root = Tk()
#在創建Label時指定各自使用的顏色
'''可以使用的顏色值:'''
#使用顏色名稱
Label(root,fg = 'red',bg = 'blue',text = 'Hello I am Tkinter').pack()
#使用顏色值#RRGGBB
Label(root,fg = 'red',bg = '#FF00FF',text = 'Hello I am Tkinter').pack()
#使用系統相關的顏色值(Windows),不建議使用這樣的值,不利於平台移植
Label(root,fg = 'red',bg = 'SystemButtonShadow',text = 'Hello I am Tkinter').pack()
root.mainloop()
'''
(1).使用顏色名稱
Red
Green
Blue
Yellow
LightBlue
......
(2).使用#RRGGBB
label = Label(root,fg = 'red',bg = '#FF00FF',text = 'Hello I am Tkinter')
指定背景色為緋紅色
(3).除此之外,Tk還支持與OS相關的顏色值,如Windows支持
SystemActiveBorder, 
SystemActiveCaption, 
SystemAppWorkspace, 
SystemBackground,
......
'''
'''4.設置寬度與高度
width:    寬度
height:    高度
'''
from Tkinter import *
root = Tk()
#創建三個Label,分別顯示red,blue,yellow
#注意三個Label的大小,它們均與文本的長度有關
Label(root,text = 'red',bg = 'red').pack()
Label(root,text = 'blue',bg = 'blue').pack()
Label(root,text = 'yellow',bg = 'yellow').pack()

#再創建三個Label,與上次不同的是這三個Label均使用width和heigth屬性
#三個Label的大小由width和height指定
Label(root,bg = 'red',width = 10,height = 3).pack()
Label(root,bg = 'blue',width = 10,height = 3).pack()
Label(root,bg = 'yellow',width = 10,height = 3).pack()
root.mainloop()
'''5.同時使用圖像與文本
compound:    指定文本(text)與圖像(bitmap/image)是如何在Label上顯示,缺省為None,
當指定image/bitmap時,文本(text)將被覆蓋,只顯示圖像了。可以使用的值:
    left:    圖像居左
    right:    圖像居右
    top:    圖像居上
    bottom:圖像居下
    center:文字覆蓋在圖像上
bitmap/image:
    顯示在Label上的圖像
text:
    顯示在Label上的文本
label = Label(root,text = 'Error',compound = 'left',bitmap = 'error')
'''
from Tkinter import *
root = Tk()
#演示compound的使用方法
#圖像與文本在Label中的位置
#圖像居下
Label(root,text = 'botton',compound = 'bottom',bitmap = 'error').pack()
#圖像居上
Label(root,text = 'top',compound = 'top',bitmap = 'error').pack()
#圖像居右
Label(root,text = 'right',compound = 'right',bitmap = 'error').pack()
#圖像居左
Label(root,text = 'left',compound = 'left',bitmap = 'error').pack()
#文字覆蓋在圖像上
Label(root,text = 'center',compound = 'center',bitmap = 'error').pack()

#消息循環
root.mainloop()

'''6.文本的多行顯示
在Tk004中,使用width和heigth來指定控件的大小,如果指定的大小無法滿足文本的要求是,會出現
什么現象呢?如下代碼:
    Label(root,bg = 'welcome to jcodeer.cublog.cn',width = 10,height = 3).pack()
運行程序,超出Label的那部分文本被截斷了,常用的方法是:使用自動換行功能,及當文本長度大於
控件的寬度時,文本應該換到下一行顯示,Tk不會自動處理,但提供了屬性:
wraplength:    指定多少單位后開始換行
justify:        指定多行的對齊方式
ahchor:        指定文本(text)或圖像(bitmap/image)在Label中的顯示位置
可用的值:
e
w
n
s
ne
se
sw
sn
center
布局如下圖

                nw        n        ne
                w      center    e
                sw        s        se
'''
from Tkinter import *
root = Tk()
#左對齊,文本居中
Label(root,text = 'welcome to jcodeer.cublog.cn',bg = 'yellow',width = 40,height = 3,wraplength = 80,justify = 'left').pack()
#居中對齊,文本居左
Label(root,text = 'welcome to jcodeer.cublog.cn',bg = 'red',width = 40,height = 3,wraplength = 80,anchor = 'w').pack()
#居中對齊,文本居右
Label(root,text = 'welcome to jcodeer.cublog.cn',bg = 'blue',width = 40,height = 3,wraplength = 80,anchor = 'e').pack()

root.mainloop()

'''
運行一下程序就可以直觀的看出,justify與anchor的區別了:一個用於控制多行的對齊;另一個用於
控制整個文本塊在Label中的位置
'''


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM