用tkinter进行界面程序开发中,经常需要将信息展示到界面上,给用户及时的反馈和想要看到的结果。Text控件允许用户以不同的样式、属性来显示和编辑文本,它可以包含纯文本或者格式化文本,同时支持嵌入图片、显示超链接以及带有 CSS 格式的 HTML 等。
一:整体界面
里面用到的组件:
1,Radiobutton控件:,单选按钮,
2,Text控件:文本框,显示信息
3,Scrollbar控件:滚动条
4,Button控件:按钮
二: 整体代码框架
def main(self):
lb = Label(root, text='可视化工具', \
#bg='#d3fbfb', \
fg='olive', \
font=('华文新魏', 12), \
width=50, \
height=2, \
relief=FLAT)
lb.place(relx=0.25, rely=0.01)
var = IntVar()
var.set(2)
rd1 = Radiobutton(root, text="func 1", fg='red',variable=var, value=0, command=lambda: self.showResult(var.get()))
rd1.place(relx = 0.23,rely = 0.2)
rd2 = Radiobutton(root, text="func 2", fg='blue',variable=var, value=1,command=lambda: self.showResult(var.get()))
rd2.place(relx = 0.4,rely = 0.2)
rd3 = Radiobutton(root, text="func 3", fg='green',variable=var, value=2,command=lambda: self.showResult(var.get()))
rd3.place(relx = 0.57,rely = 0.2)
rd4 = Radiobutton(root, text="func 4", fg='DeepPink',variable=var, value=3, command=lambda: self.showResult(var.get()))
rd4.place(relx = 0.23,rely = 0.25)
rd5 = Radiobutton(root, text="func 5", fg='SlateBlue',variable=var, value=4,command=lambda: self.showResult(var.get()))
rd5.place(relx = 0.4,rely = 0.25)
rd6 = Radiobutton(root, text="func 6", fg='Brown',variable=var, value=5,command=lambda: self.showResult(var.get()))
rd6.place(relx = 0.57,rely = 0.25)
startButton = Button(root, text='Start',font=('华文新魏', 20), activebackground = "green", command=lambda: self.startFunc(var.get()))
startButton.place(relx=0.35, rely=0.89, relwidth=0.3, relheight=0.1)
点击start按钮在Text控件中显示信息,Text控件绑定滚动条
def startFunc(self,selectFunc):
self.collectInfo = [1,2,3,4,5,6]
if not self.collectInfo:
return
if self.startButtonFirst == 0:
self.validInfo = Text(root, width=100, height=19)#, undo=True, autoseparators=False
self.validInfo.place(relx=0.01, rely=0.32)
# 放到窗口的右侧, 填充Y竖直方向
self.scroll = Scrollbar()
self.scroll.pack(side=RIGHT,fill=Y)
# 两个控件关联
self.scroll.config(command=self.validInfo.yview)
self.validInfo.config(yscrollcommand=self.scroll.set)
self.validInfo.delete('1.0','end')
if selectFunc == 0:
self.validInfo.insert(INSERT, )
elif selectFunc == 1:
self.validInfo.insert(INSERT, self.collectInfo[1])
elif selectFunc == 2:
self.validInfo.insert(INSERT, self.collectInfo[2])
elif selectFunc == 3:
self.validInfo.insert(INSERT, self.collectInfo[3])
elif selectFunc == 4:
self.validInfo.insert(INSERT, self.collectInfo[4])
elif selectFunc == 5:
self.validInfo.insert(INSERT, self.collectInfo[5])
self.startButtonFirst = 1
点击单选按钮显示信息
def showResult(self,selectFunc):
if self.startButtonFirst == 0:
return
self.validInfo.delete('1.0','end')
if selectFunc == 0:
self.validInfo.insert(INSERT, self.collectInfo[0])
elif selectFunc == 1:
self.validInfo.insert(INSERT, self.collectInfo[1])
elif selectFunc == 2:
self.validInfo.insert(INSERT, self.collectInfo[2])
elif selectFunc == 3:
self.validInfo.insert(INSERT, self.collectInfo[3])
elif selectFunc == 4:
self.validInfo.insert(INSERT, self.collectInfo[4])
elif selectFunc == 5:
self.validInfo.insert(INSERT, self.collectInfo[5])
三:Text控件
1,基本属性
属性 | 说明 |
autoseparators | 默认为 True,表示执行撤销操作时是否自动插入一个“分隔符”(其作用是用于分隔操作记录) |
exportselection | 默认值为 True,表示被选中的文本是否可以被复制到剪切板,若是 False 则表示不允许。 |
insertbackground | 设置插入光标的颜色,默认为 BLACK |
insertborderwidth | 设置插入光标的边框宽度,默认值为 0 |
insertofftime | 该选项控制光标的闪烁频频率(灭的状态) |
insertontime | 该选项控制光标的闪烁频频率(亮的状态) |
selectbackground | 指定被选中文本的背景颜色,默认由系统决定 |
selectborderwidth | 指定被选中文本的背景颜色,默认值是0 |
selectforeground | 指定被选中文本的字体颜色,默认值由系统指定 |
setgrid | 默认值是 False,指定一个布尔类型的值,确定是否启用网格控制 |
spacing1 | 指定 Text 控件文本块中每一行与上方的空白间隔,注意忽略自动换行,且默认值为 0。 |
spacing2 | 指定 Text 控件文本块中自动换行的各行间的空白间隔,忽略换行符,默认值为0 |
spacing3 | 指定 Text 组件文本中每一行与下方的空白间隔,忽略自动换行,默认值是 0 |
tabs | 定制 Tag 所描述的文本块中 Tab 按键的功能,默认被定义为 8 个字符宽度,比如 tabs=('1c', '2c', '8c') 表示前 3 个 Tab 宽度分别为 1厘米,2厘米,8厘米。 |
undo | 该参数默认为 False,表示关闭 Text 控件的“撤销”功能,若为 True 则表示开启 |
wrap | 该参数用来设置当一行文本的长度超过 width 选项设置的宽度时,是否自动换行,参数值 none(不自动换行)、char(按字符自动换行)、word(按单词自动换行) |
xscrollcommand | 该参数与 Scrollbar 相关联,表示沿水平方向上下滑动 |
yscrollcommand | 该参数与 Scrollbar 相关联,表示沿垂直方向左右滑动 |
2,基本方法
方法 | 说明 |
bbox(index) | 返回指定索引的字符的边界框,返回值是一个 4 元组,格式为(x,y,width,height) |
edit_modified() | 该方法用于查询和设置 modified 标志(该标标志用于追踪 Text 组件的内容是否发生变化) |
edit_redo() | “恢复”上一次的“撤销”操作,如果设置 undo 选项为 False,则该方法无效。 |
edit_separator() | 插入一个“分隔符”到存放操作记录的栈中,用于表示已经完成一次完整的操作,如果设置 undo 选项为 False,则该方法无效。 |
get(index1, index2) | 返回特定位置的字符,或者一个范围内的文字。 |
image_cget(index, option) | 返回 index 参数指定的嵌入 image 对象的 option 选项的值,如果给定的位置没有嵌入 image 对象,则抛出 TclError 异常 |
image_create() | 在 index 参数指定的位置嵌入一个 image 对象,该 image 对象必须是 Tkinter 的 PhotoImage 或 BitmapImage 实例。 |
insert(index, text) | 在 index 参数指定的位置插入字符串,第一个参数也可以设置为 INSERT,表示在光标处插入,END 表示在末尾处插入。 |
delete(startindex [, endindex]) | 删除特定位置的字符,或者一个范围内的文字。 |
see(index) | 如果指定索引位置的文字是可见的,则返回 True,否则返回 False。 |
四:tkinter支持的颜色汇总
在tkinter中有很多颜色的设置,此处汇总一下,不用四处找了
- '''#FFB6C1 LightPink 浅粉红
- #FFC0CB Pink 粉红
- #DC143C Crimson 深红/猩红
- #FFF0F5 LavenderBlush 淡紫红
- #DB7093 PaleVioletRed 弱紫罗兰红
- #FF69B4 HotPink 热情的粉红
- #FF1493 DeepPink 深粉红
- #C71585 MediumVioletRed 中紫罗兰红
- #DA70D6 Orchid 暗紫色/兰花紫
- #D8BFD8 Thistle 蓟色
- #DDA0DD Plum 洋李色/李子紫
- #EE82EE Violet 紫罗兰
- #FF00FF Magenta 洋红/玫瑰红
- #FF00FF Fuchsia 紫红/灯笼海棠
- #8B008B DarkMagenta 深洋红
- #800080 Purple 紫色
- #BA55D3 MediumOrchid 中兰花紫
- #9400D3 DarkViolet 暗紫罗兰
- #9932CC DarkOrchid 暗兰花紫
- #4B0082 Indigo 靛青/紫兰色
- #8A2BE2 BlueViolet 蓝紫罗兰
- #9370DB MediumPurple 中紫色
- #7B68EE MediumSlateBlue 中暗蓝色/中板岩蓝
- #6A5ACD SlateBlue 石蓝色/板岩蓝
- #483D8B DarkSlateBlue 暗灰蓝色/暗板岩蓝
- #E6E6FA Lavender 淡紫色/熏衣草淡紫
- #F8F8FF GhostWhite 幽灵白
- #0000FF Blue 纯蓝
- #0000CD MediumBlue 中蓝色
- #191970 MidnightBlue 午夜蓝
- #00008B DarkBlue 暗蓝色
- #000080 Navy 海军蓝
- #4169E1 RoyalBlue 皇家蓝/宝蓝
- #6495ED CornflowerBlue 矢车菊蓝
- #B0C4DE LightSteelBlue 亮钢蓝
- #778899 LightSlateGray 亮蓝灰/亮石板灰
- #708090 SlateGray 灰石色/石板灰
- #1E90FF DodgerBlue 闪兰色/道奇蓝
- #F0F8FF AliceBlue 爱丽丝蓝
- #4682B4 SteelBlue 钢蓝/铁青
- #87CEFA LightSkyBlue 亮天蓝色
- #87CEEB SkyBlue 天蓝色
- #00BFFF DeepSkyBlue 深天蓝
- #ADD8E6 LightBlue 亮蓝
- #B0E0E6 PowderBlue 粉蓝色/火药青
- #5F9EA0 CadetBlue 军兰色/军服蓝
- #F0FFFF Azure 蔚蓝色
- #E0FFFF LightCyan 淡青色
- #AFEEEE PaleTurquoise 弱绿宝石
- #00FFFF Cyan 青色
- #00FFFF Aqua 浅绿色/水色
- #00CED1 DarkTurquoise 暗绿宝石
- #2F4F4F DarkSlateGray 暗瓦灰色/暗石板灰
- #008B8B DarkCyan 暗青色
- #008080 Teal 水鸭色
- #48D1CC MediumTurquoise 中绿宝石
- #20B2AA LightSeaGreen 浅海洋绿
- #40E0D0 Turquoise 绿宝石
- #7FFFD4 Aquamarine 宝石碧绿
- #66CDAA MediumAquamarine 中宝石碧绿
- #00FA9A MediumSpringGreen 中春绿色
- #F5FFFA MintCream 薄荷奶油
- #00FF7F SpringGreen 春绿色
- #3CB371 MediumSeaGreen 中海洋绿
- #2E8B57 SeaGreen 海洋绿
- #F0FFF0 Honeydew 蜜色/蜜瓜色
- #90EE90 LightGreen 淡绿色
- #98FB98 PaleGreen 弱绿色
- #8FBC8F DarkSeaGreen 暗海洋绿
- #32CD32 LimeGreen 闪光深绿
- #00FF00 Lime 闪光绿
- #228B22 ForestGreen 森林绿
- #008000 Green 纯绿
- #006400 DarkGreen 暗绿色
- #7FFF00 Chartreuse 黄绿色/查特酒绿
- #7CFC00 LawnGreen 草绿色/草坪绿
- #ADFF2F GreenYellow 绿黄色
- #556B2F DarkOliveGreen 暗橄榄绿
- #9ACD32 YellowGreen 黄绿色
- #6B8E23 OliveDrab 橄榄褐色
- #F5F5DC Beige 米色/灰棕色
- #FAFAD2 LightGoldenrodYellow 亮菊黄
- #FFFFF0 Ivory 象牙色
- #FFFFE0 LightYellow 浅黄色
- #FFFF00 Yellow 纯黄
- #808000 Olive 橄榄
- #BDB76B DarkKhaki 暗黄褐色/深卡叽布
- #FFFACD LemonChiffon 柠檬绸
- #EEE8AA PaleGoldenrod 灰菊黄/苍麒麟色
- #F0E68C Khaki 黄褐色/卡叽布
- #FFD700 Gold 金色
- #FFF8DC Cornsilk 玉米丝色
- #DAA520 Goldenrod 金菊黄
- #B8860B DarkGoldenrod 暗金菊黄
- #FFFAF0 FloralWhite 花的白色
- #FDF5E6 OldLace 老花色/旧蕾丝
- #F5DEB3 Wheat 浅黄色/小麦色
- #FFE4B5 Moccasin 鹿皮色/鹿皮靴
- #FFA500 Orange 橙色
- #FFEFD5 PapayaWhip 番木色/番木瓜
- #FFEBCD BlanchedAlmond 白杏色
- #FFDEAD NavajoWhite 纳瓦白/土著白
- #FAEBD7 AntiqueWhite 古董白
- #D2B48C Tan 茶色
- #DEB887 BurlyWood 硬木色
- #FFE4C4 Bisque 陶坯黄
- #FF8C00 DarkOrange 深橙色
- #FAF0E6 Linen 亚麻布
- #CD853F Peru 秘鲁色
- #FFDAB9 PeachPuff 桃肉色
- #F4A460 SandyBrown 沙棕色
- #D2691E Chocolate 巧克力色
- #8B4513 SaddleBrown 重褐色/马鞍棕色
- #FFF5EE Seashell 海贝壳
- #A0522D Sienna 黄土赭色
- #FFA07A LightSalmon 浅鲑鱼肉色
- #FF7F50 Coral 珊瑚
- #FF4500 OrangeRed 橙红色
- #E9967A DarkSalmon 深鲜肉/鲑鱼色
- #FF6347 Tomato 番茄红
- #FFE4E1 MistyRose 浅玫瑰色/薄雾玫瑰
- #FA8072 Salmon 鲜肉/鲑鱼色
- #FFFAFA Snow 雪白色
- #F08080 LightCoral 淡珊瑚色
- #BC8F8F RosyBrown 玫瑰棕色
- #CD5C5C IndianRed 印度红
- #FF0000 Red 纯红
- #A52A2A Brown 棕色
- #B22222 FireBrick 火砖色/耐火砖
- #8B0000 DarkRed 深红色
- #800000 Maroon 栗色
- #FFFFFF White 纯白
- #F5F5F5 WhiteSmoke 白烟
- #DCDCDC Gainsboro 淡灰色
- #D3D3D3 LightGrey 浅灰色
- #C0C0C0 Silver 银灰色
- #A9A9A9 DarkGray 深灰色
- #808080 Gray 灰色
- #696969 DimGray 暗淡灰
- #000000 Black 纯黑'''