Message 控件
Message 控件用来展示一些文字短消息. Message 和 Label 控件有些类似, 但在展示文字方面比 Label 要灵活, 比如 Message 控件可以改变字体, 而 Label 控件只能使用一种字体. 它提供了一个换行对象, 以使文字可以断为多行. 它可以支持文字的自动换行及对齐. 这里要澄清一下前面提到的 Message 控件可以改变字体的说法: 这是可以为单个控件设置任意字体, 控件内的文字都将显示为该字体. 但不能给单个控件内的文字设置多种字体. 如果需要这么做, 可以考虑使用 Text 控件.
创建一个 Message 控件的语法如下: w = Message ( master, option, ... )
常用属性
属性名称 | 属性含义 |
---|---|
anchor | 指示文字会被放在控件的什么位置, 可选项有 N, NE, E, SE, S, SW, W, NW, CENTER. 默认为 CENTER. |
aspect | 控件的宽高比, 即 width/height , 以百分比形式表示. 默认为 150, 即 Message 控件宽度比其高度大 50%. 注意: 如果显式的指定了控件宽度, 则该属性将被忽略. |
background | 控件的背景色. 默认值为当前窗口系统的默认背景色. |
bg | 同 background. |
borderwidth | 边框宽度. 默认为2. |
bd | 同 borderwidth. |
cursor | 定义鼠标移动到 Message 上时的光标样式. 默认为系统标准样式. |
font | 文字字体. 默认为当前系统默认. |
foreground | 文字颜色. 默认为当前系统默认. |
fg | 同 foreground |
highlightbackground | 和 highlightcolor, highlightthickness 这两个属性一起指定了控件如何绘制高亮区域. |
highlightcolor | 参考 highlightbackground. |
highlightthickness | 参考 highlightbackground. |
justify | 指示多行文本如何对齐. 可选项为 LEFT, RIGHT, CENTER. 默认为 LEFT. 注意: 该属性指示文字对齐方式. 如果要指定文字在控件内的位置, 请使用 anchor 属性. |
padx | 水平方向的边距. 默认为 -1, 即无边距. |
pady | 垂直方向的边距. 默认为 -1, 即无边距. |
relief | 边框样式. 默认为 FLAT. 其他可选项为 SUNKEN, RAISED, GROOVE, RIDGE. |
takefocus | 如果设置为 True, 控件将可以获取焦点. 默认为 False. |
text | 文字内容. 控件将根据宽度自动对文字进行断行. |
textvariable | 关联一个 Tkinter variable 对象, 通常为 StringVar 对象. 控件文本将在该对象改变时跟着改变. |
width | 控件宽度, 单位为 charater units (不是像素). 如果未指定该选项, 将根据 aspect 属性自动设置宽度. |
来源:http://blog.csdn.net/liuxu0703/article/details/60600852
1、简单示例
from Tkinter import *
root=Tk()
root.geometry('200x100')
#默认情况下会换行,设置足够大的width可显示在同一行,即使改变窗口大小也不能改变默认的换行模式
Message(root,text='hello Message',fg='red').pack()
root.mainloop()
使用aspect属性指定宽高比例
默认情况下wider/height= 1.5,可以使用aspect属性,设置为4,即宽为高的4倍,可以显示'❤'
from Tkinter import *
import time
Color=['red','yellow','blue','green','purple']
root = Tk()
for i in range(10):
Message(root,text = '❤'*i,aspect = 400,fg=Color[i%5]).pack()
root.mainloop()
Message绑定变量
from Tkinter import *
import time
root = Tk()
Color=['red','yellow','blue','green','purple']
direction1=['left','right','center']
direction2=['top','bottom' , 'left', 'right']
v=StringVar()
#一但设置绑定变量,变量将直接覆盖text中的值
v.set('❤'*8)
for i in range(10):
Message(root,text = 'A'*i,aspect = 400,fg=Color[i%5],textvariable=v,justify=direction1[i%3]).pack(side=direction2[i%4])
print v.get()
root.mainloop()