前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >tkinter -- Text (2)

tkinter -- Text (2)

作者头像
py3study
发布于 2018-08-03 02:31:03
发布于 2018-08-03 02:31:03
65600
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

使用 tag 来指定文本的属性

创建一个指定背景颜色的 TAG

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'a'来指定文本属性
t.insert(1.0, '123456789', 'a')
t.pack()
root.mainloop()

效果:

结果是文本颜色改变为红色了

同时使用两个文本指定同一个属性

没有特别设置的话,最后创建的那个会覆盖掉其它所有的设置

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')
t.tag_config('b', foreground='blue')

# 使用 TAG 'a''b'来指定文本属性
t.insert(1.0, '123456789', ('b', 'a'))
t.pack()

结果:

结果是文本的颜色不是按照 insert 给定的顺序来设置,而是按照 tag 的创建顺序来设置的

控制 tag 的级别

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')
t.tag_config('b', foreground='blue')

# 使用 tag_lower 来降低 b 的级别
t.tag_lower('b')

# 使用 TAG 'a''b'来指定文本属性
t.insert(1.0, '123456789', ('b', 'a'))
t.pack()
root.mainloop()

结果:

结果:文本内容颜色变为了红色,蓝色的作用级别小于红色了,即使是先创建了红色

对文本块添加 tag

tag_add 方法的使用

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为蓝色
t.tag_config('b', foreground='blue')

# 使用 tag_lower 来降低 b 的级别
t.tag_lower('b')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n')
t.tag_add('b', '2.5', '2.end')
t.pack()
root.mainloop()

效果:

先向 Text 中添加了10行文本,创建一 tag,将第2行第6个至第二行行尾使用此 tag

使用自定义 mark 对文本块添加 tag

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为蓝色
t.tag_config('b', foreground='blue')

# 使用 tag_lower 来降低 b 的级别
t.tag_lower('b')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n')

# 自定义两个 mark,并使用它们来指定添加 tag 的文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
t.tag_add('b', 'ab', 'cd')
t.pack()
root.mainloop()

结果:

先向 Text 中添加了10行文本,创建两个 mark('ab'和'cd'),将使用这两个 tag 指定文本的文本块使用此 tag

使用 indexes 获得 Text 中的内容

分别使用内置的 indexes 和自定义 mark 来获取文本

get 方法的使用

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n', 'a')

# 获得1.0-2.3的文本
print(t.get('1.0', '2.3'))

# 自定义两个mark,并使用它们来获得文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
print(t.get('ab', 'cd'))
t.pack()
root.mainloop()

结果:

测试 delete 对 tag 的影响

delete 方法不会对 tag 造成影响,也就是说删除文本与 tag 没有任何关系

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n', 'a')

# 自定义两个mark,并使用它们来获得文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
t.tag_add('b', 'ab', 'cd')

# 删除(1.0 - 4.0)的文本
t.delete('1.0', '4.0')
t.pack()
root.mainloop()

效果:

(1.0-4.0)的文本全部初始删除了,剩余的文本全部以红色显示,即还保留 tag 的属性

使用 tag_delete 对文本属性的影响

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
# 创建一个 TAG,其前景色为红色
t.tag_config('a', foreground='red')

# 使用 TAG 'b'来指定文本属性
for i in range(10):
    t.insert(1.0, '123456789\n', 'a')

# 自定义两个mark,并使用它们来获得文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
t.tag_add('a', 'ab', 'cd')

# 删除 tag 'a',注意这个操作时在tag_add之后执行的
t.tag_delete('a')
t.pack()
root.mainloop()

结果:

结果所有的文本没有了 tag('a')属性,即 tag_delete 会清除所有与此 tag 相关的属性,不论是之前还是之后

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/06/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tkinter -- Text (3)
注意:first 没有使用 tag('b')属性,last 使用了 tag('b')属性
py3study
2018/08/03
5700
tkinter -- Text(1)
root 中含有一 Text 控件,可以在这个控件内输入文本,可以使用 Ctrl+C/V 向 Text 内添加剪切板上的内容(文本),不接受 Ctrl+Z 执行操作
py3study
2018/08/03
5870
软件测试|超好用超简单的Python GUI库——tkinter(五)
在之前,我们介绍了tkinter的button控件,label控件,今天我们介绍一下entry控件,entry控件我们可以理解为界面的内容输入框,实现GUI界面与用户的信息交互,最典型的场景就是我们在登录时需要输入的账号密码。
霍格沃兹测试开发Muller老师
2023/04/10
9440
tkinter实例
tkinter实例 import tkinter as tk import hashlib import time LOG_LINE_NUM = 0 class MY_GUI():     def __init__(self, init_window_name):         self.init_window_name = init_window_name     # 设置窗口     def set_init_window(self):         self.init_window_na
py3study
2018/08/03
1.8K0
Python Tkinter 窗口的管理与设置(四):常用组件之Label组件
那么到这里,我相信大家对tkinter的简单使用就有一个大致的了解了。但是呢,人不可能一步登天。一个功能美观多样的app界面一定是由非常多的控件一点一点组成的,想要使用tkinter做出一个美观漂亮的ui界面我们还有很多路要走。那么我们以Lable开始,学习对tkinter各类控件的使用
松鼠爱吃饼干
2021/06/15
1.2K0
​Python | GUI编程之tkinter (一)
本文内容为使用Python3的tkinter模块,开发GUI。在阅读本文前,请确保你已经或可能满足以下条件:
LogicPanda
2019/07/30
6.1K0
tkinter学习系列(四)之Butto
目录 目录 前言 (一)基本用法和可选属性 ==1.基本用法== ==2.可选属性== (二)属性的具体实现和案例 ==1.常用属性== ==案例一== ==2.按钮里的图片== ==案例二== ==案例三== ==3.鼠标的样式== ==案例四== ==4.边框样式== ==案例五== (三)按钮的事件绑定 ==1.普通的Button绑定事件== ==案例六== ==2.传参数Button绑定事件== ==案例七== 目录 前言 Button小部件是一个标准的Tkinter的控件,用于实现各种按钮
py3study
2020/01/17
1.2K0
Python tkinter学习3 En
#tk_entry_text.py #学习tk的Entry组件,学习在界面中如何实现输入及显示信息 import tkinter as tk ####################第一步 window = tk.Tk() window.title('学习Entry组件') #这里是设置初始窗口大小,用户可以拉动边框改变窗口大小。 window.geometry('450x400')  ################第二步 #创建tk”输入”组件,属于“window”的子组件 #show是你输入字符后,希望以什么方式显示,例如输mima时,希望用*显示,那么show='*' e = tk.Entry(window,show='N') #挂在“window“内,让e组件在"window"上显示 e.pack() ########################第五步 def insert1(): #var的值,来自于tk.Entry实例化e的get方。而e创建于Entry组件,即你输入啥,就get到啥 var = e.get() #实例t在第四步创建,是一个tk文本组件实例。实例t的insert方法, #括号内第二个参数是要输入的值,这里var是字符串;括号内第一个参数insert表示在文本中的光标后插入var的值,tk实例insert方法很方便啊。 t.insert('insert',var) #实现插入到文本末尾的按钮的方法 insert2 def insert2(): var = e.get() #括号内end表示text文末插入var的值,不用insert添加, t.insert('end',var) ######################扩展 insert3之insert方法 def insert3(): var = e.get() #在text组件文本中的x行,y列后插入var值 #x1.get()获取的是字符串 x = int(x1.get()) y = int(y1.get()) z = x+y*0.1 #insert方法的第一个参数z,其实是指第x行,第y列。z是一个float型。 t.insert(z,var) print('x.get的类型',x1.get().__class__)  print('z的类型',z.__class__)  ####################第三步 #button组件,command=insert1 表示点击button1按钮后,调用insert1方法 button1 = tk.Button(window,text='插入光标后',width = 15,height = 2,command=insert1) button1.pack() #创建一个让输入的文字插入到文本末尾的按钮 button2 = tk.Button(window,text='插入文本末尾',width = 15,height = 2,command=insert2) button2.pack()
py3study
2020/01/07
5200
tkinter -- Canvas(2)
Canvas 使用了 stack 的技术,新创建的 item 总是位于前一个创建的 item 之上,故调用above 时,它会查找 rt2上面的 item 为 rt3,故 rt3中添加了 tag('r4'),同样 add_below 会查找下面的 item
py3study
2018/08/03
3090
tkinter -- Spinbox
只是创建了一个 Spinbox,其它的什么也做不了,与 Scale 不同,Scale 使用缺省值就可以控制 值的改变
py3study
2018/08/03
8100
tkinter -- Canvas(1)
提供可以用来进行绘图的 Container,支持基本的几何元素,使用 Canvas 进行绘图时,所有的操作都是通过 Canvas,不是通过它的元素
py3study
2018/08/03
7660
软件测试|超好用超简单的Python GUI库——tkinter(七)
上文我们介绍了tkinter的text模块的基本使用,以及撤销和恢复功能的实现,本篇文章我们将介绍 text模块对Mark、Tag 以及 Index的处理方法。
霍格沃兹测试开发Muller老师
2023/05/07
5470
Python-Tkinter图形化界面设计(详细教程 )
声明:本篇文章为转载自https://www.jianshu.com/p/91844c5bca78,在原作者的基础上添加目录导航,旨在帮助大家以更高效率进行学习和开发。
全栈程序员站长
2021/04/07
14.8K0
python tkinter 设计指南
pack() 是一种较为简单的布局方法,在不使用任何参数的情况下,它会将控件以添加时的先后顺序,自上而下,一行一行的进行排列,并且默认居中显示。pack() 方法的常用参数如下所示:
独元殇
2023/03/21
7K0
tkinter -- button2
StringVar是Tk库内部定义的字符串变量类型,在这里用于管理部件上面的字符;不过一般用在按钮button上
py3study
2018/08/02
4350
图形化界面的开发(GUI)_Tkinter库的使用-2(Label+Message+Text)
本篇文章主要讲Tkinter库的Label标签控件,Message控件和文本控件Text,以及相对关的属性和方法以及示例。
laity
2025/02/27
2050
图形化界面的开发(GUI)_Tkinter库的使用-2(Label+Message+Text)
tkinter -- button1
Tkinter Relief styles: 构件的浮雕式是指某些模拟的3-D周围的部件外的影响
py3study
2018/08/02
8400
tkinter -- Canvas(4)
先使用 PhotoImage 创建 GIF 图像,再将 image 属性来设置为新创建的 img
py3study
2018/08/03
7240
Python Tkinter之初体验
官方用的GUI工具包——Tkinter(IDLE就是用这个开发的)。 Tkinter是Python的标准GUI库,它实际是建立在Tk技术上的。在大多数Unix平台以及Windows系统上 都可用。 作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我 们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个键盘输入,输出的黑色窗 口,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。 对于稍有GUI编程经验的人来说,Python的Tkinter界面库是非常简单的。python的GUI库非常多,选择 Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,三则是从需求出发,Python作为一 种脚本语言,或者说一种胶水语言,一般不会用它来开发复杂的桌面应用,它并不具备这方面的优势, 使用Python,可以把它作为一个灵活的工具,而不是作为主要开发语言,那么在工作中,需要制作一个 小工具,肯定是需要有界面的,不仅自己用,也能分享别人使用,在这种需求下,Tkinter是足够胜任 的!
松鼠爱吃饼干
2021/03/16
1.7K0
Python Tkinter之初体验
五分钟技术分享使用Python快速制作UI界面
今天花五分钟我们聊聊使用Python快速制作UI,在开发过程中我们会有一些测试工具的需求,只注重功能,并不在乎UI的美观性,只要够稳定,开发速度够快。
keyle
2024/11/01
2740
五分钟技术分享使用Python快速制作UI界面
相关推荐
tkinter -- Text (3)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验