2、标签Label
属性设置
Label()方法可以用于在窗口内建立文字或图像标签,有关图像标签的内容将在后续讨论,语法格式如下:
Label(父对象,option, ...)
参数一:表示这个标签将建立在哪一个父对象(父窗口或者容器)内
其它option参数():
(1) anchor:如果空间大于所需时,控制标签的位置,默认是CENTER(居中)
Literal'nw', 'n', 'ne', 'w', 'center', 'e', 'sw', 's', 'se',表示东南西北,
注意使用小写anchor="se",使用大写anchor=SE
(2) bg或background:背景色彩。
(3) fg或foreground:前景色彩,标签的颜色
(4) bordedwidth或bd:标签边界宽度,默认是1。
(5) compound:可以设置标签内含图像和文字时,彼此的位置关系。
left:图像在左。
right:图像在右。
top:图像在上。
bottom:图像在下。
center:文字覆盖在图像上方。
(6) cursor:当鼠标光标在标签上方时的外形。

(7) bitmap:使用默认图标当作标签内容。
系统默认的图标:error、hourglass、info、questhead、question、warning、
gray12、gray25,gray50、gray75

(8) font:可选择字形、字形样式与大小。
字形family:如Helvetica,Times等,可以自行进入Word内参考所有系统字形。
字号size:单位是像素。
weight:例如bold、normal。
slant:例如italic、roman,如果不是talic则是roman
underline:例如True、False
overstrike:例如True、False
(9) height:标签高度,单位是字符。
(10) width:标签宽度,单位是字符。
(11) image:标签以图像方式呈现。
(12) padx/pady:标签文字与标签区间的间距,单位是像素。.
padx可以设置标签文字左右边界与标签区间的x轴间距,pady可以设置标签文字上下
边界与标签区间的y轴间距。
(13) relief:默认是relief=FLAT,可由此控制标签的外框。

(14) text:标签内容,如果有"\n" 则可输入多行文字。
(15) textvariable:可以设置标签以变量方式显示。
(16) underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。
(17) justify:存在多方文本时最后一行的对齐方式,可取值有LEFT / CNETER / RIGHT(靠左/居中/靠右),默认是居中对齐。
(18) wraplength:文本到多少宽度后换行,单位是像素。
图像PhotoImage
图片可以应用在许多对方,例如标签、功能按钮、选项按钮、文字区域等。在使用前可以用PhotoImage()方法建立图像对象,然后再将此对象应用在其他窗口组件上。语法如下
python
imageobj = PhotoImage(file="xxx.gif") # 扩展名gif,传回图像对象
PhotoImage()方法早期只支持gif文件格式,不接受常用的jpg或png格式的图像,目前已经可以支持png格式了。可以在Label()方法内使用"image=imageobj"参数设置此图像对象。
如果想要在标签内显示jpg文件,需要借助PIL模块的Image和ImageTk模块,需要先导入pillow模块。
注意在程序设计中需导入的是PIL模块,主要原因是要向旧版Python Image Library兼容,如下所示
python
from tkinter import *
from PIL import Image, ImageTk
root = Tk()
root.title("my window")
root.geometry("680x400")
image = Image.open("xxx.jpg")
yellowstone = ImageTk.PhotoImage(image)
label = Label(root, image=yellostone)
label.pack()
root.mainloop()
注意:bitmap参数和image参数不能共存,如果发生这种情况,bitmap参数将不起作用。
Config()方法
widget控件在建立时可以直接设置对象属性,若是部分属性未建立,未来在程序运行时如果想要建立或是更改属性可以使用config()方法。此方法内属性设置的参数用法与建立时相同。
python
from tkinter import *
counter = 0 # 计数的全局变量
def run_counter(digit): # 数字变量内容的更新
def counting(): # 更新的数字方法
global counter #
counter += 1 # 定义全局变量
digit.config(text=str(counter)) # 列出数字内容
digit.after(1000, counting) # 隔一秒后调用counting
counting() # 持续调用
root = Tk()
root.title("ch2_23")
digit = Label(root, bg="yellow", fg="blue", height = 3, width=10, font=("Helvetica", 20, "bold"))
digit.pack()
run_counter(digit=digit)
root.mainloop()
keys()方法
调用这个方法会用一个列表传回这个widget所有的参数。
分割线
python
Separator(父对象, option)
参数一:父对象,表示这个分隔线将建立在哪一个父对象内;
options参数如果是HORIZONTAL则建立水平分割线,VERTICAL则建立垂直分隔线。
python
from tkinter import *
from tkinter.ttk import Separator
root = Tk()
root.title("ch2_26")
myTitle = "一个人的极境旅行"
myContent = """2016年12月,我一个人订了机票和船票,
开始我的南极旅行,飞机经迪拜再往阿根廷的乌斯环亚,
在此我登上邮轮开始我的南极之旅。"""
lab1 = Label(root, text=myTitle, font=("Helvetica", 20, "bold"))
lab1.pack(padx=10, pady=10)
sep = Separator(root, orient=HORIZONTAL)
sep.pack(fill=X, padx=5) # 表示此分割线填满X轴,与窗口边界左右均相距5像素
lab2 = Label(root, text=myContent)
lab2.pack(padx=10, pady=10)
root.mainloop()