当前位置: 首页 > 网络知识

Python基础入门学习笔记 070 GUI的终极选择:Tkinter7

时间:2026-01-29 09:25:56
实例1:添加Tags 1 fr tkinter import * 2 3 root = Tk() 4 text = Text(root,width=30,height=5) 5 text.pack() 6 7 #INSERT索引表示插入光标当前的位置 8 text.insert(INSERT,"I love FishC!")#光标当前的位置插入 9 #注意,行号从1开始,列号则从0开始 10 text.tag_add("tag1","1.7","1.12","1.14")#1.7(第一行第八列)到1.12,,与1.14设置Tag样式 11 text.tag_config("tag1",background ="yellow",foreground="red") 12 13 mainloop()

实例2:Tags覆盖

1 fr tkinter import * 2 3 root = Tk() 4 text = Text(root,width=30,height=5) 5 text.pack() 6 7 #INSERT索引表示插入光标当前的位置 8 text.insert(INSERT,"I love FishC!")#光标当前的位置插入 9 #注意,行号从1开始,列号则从0开始 10 text.tag_add("tag1","1.7","1.12","1.14")#1.7(第一行第八列)到1.12,,与1.14设置Tag样式 11 text.tag_add("tag2","1.7","1.12","1.14")#1.7(第一行第八列)到1.12,,与1.14设置Tag样式 12 13 text.tag_config("tag1",background ="yellow",foreground="red") 14 text.tag_config("tag2",background ="blue") 15 16 mainloop()

实例2:降低Tag优先级

1 fr tkinter import * 2 3 root = Tk() 4 text = Text(root,width=30,height=5) 5 text.pack() 6 7 #INSERT索引表示插入光标当前的位置 8 text.insert(INSERT,"I love FishC!")#光标当前的位置插入 9 #注意,行号从1开始,列号则从0开始 10 text.tag_add("tag1","1.7","1.12","1.14")#1.7(第一行第八列)到1.12,,与1.14设置Tag样式 11 text.tag_add("tag2","1.7","1.12","1.14")#1.7(第一行第八列)到1.12,,与1.14设置Tag样式 12 13 text.tag_config("tag1",background ="yellow",foreground="red") 14 text.tag_config("tag2",background ="blue") 15 16 text.tag_lower("tag2")#降低tag2的优先级 17 18 mainloop()

实例3:Tags事件绑定

1 fr tkinter import * 2 import webbrowser#导入网页模块 3 4 def show_hand_cursor(event): 5 textonfig(cursor="arrow") 6 7 def show_arrow_cursor(event): 8 textonfig(cursor="xterm") 9 10 def click(event): 11 webbrowser.open("fishc") 12 13 root = Tk() 14 text = Text(root,width=30,height=5) 15 text.pack() 16 17 #INSERT索引表示插入光标当前的位置 18 text.insert(INSERT,"I love FishC!")#光标当前的位置插入 19 #注意,行号从1开始,列号则从0开始 20 text.tag_add("link","1.7","1.16")#1.7(第一行第八列)到1.16 21 #设置蓝色前景色并底部划线 22 text.tag_config("link",foreground="blue",underline=True) 23 24 #当进入绑定文本段时,鼠标样式切换为“arrow"形态 25 text.tag_bind("link","<Enter>",show_hand_cursor) 26 #当离开绑定文本段时,鼠标样式切换为“xterm"形态 27 text.tag_bind("link","<Leave>",show_arrow_cursor) 28 #当触发鼠标“左键单击”时,使用默认浏览器打开鱼C网址 29 text.tag_bind("link","<Button1>",click) 30 31 mainloop()

实例4:判断内容是否发生改变

1 fr tkinter import * 2 import hashlib 3 4 def getSig(contents): 5 m = hashlib.md5(contents.encode()) 6 return m.digest() 7 8 def check():#检查 9 contents = text.get(1.0,END) 10 if sig!=getSig(contents): 11 print("警报,内容发生变动") 12 else: 13 print("风平浪静") 14 15 root = Tk() 16 text = Text(root,width=30,height=5) 17 text.pack() 18 19 #INSERT索引表示插入光标当前的位置 20 text.insert(INSERT,"I love FishC!")#光标当前的位置插入 21 #注意,行号从1开始,列号则从0开始 22 #获取文本内容 23 contents=text.get(1.0,END) 24 25 sig = getSig(contents) 26 27 Button(root,text="检查",cmand=check).pack() 28 29 mainloop()

实例5:查找操作(使用search()方法可以搜索Text组件中的内容)

1 fr tkinter import * 2 import hashlib 3 4 #将任何格式的索引号统一为元组(行,列)的格式输出 5 def getIndex(text,index): 6 #split这里以"."拆分字符串,将1.3拆分为字符1和3,然后通过map将字符转换为整型 7 return tuple(map(int,str.split(text.index(index),"."))) 8 9 root = Tk() 10 text = Text(root,width=30,height=5) 11 text.pack() 12 13 #INSERT索引表示插入光标当前的位置 14 text.insert(INSERT,"I love FishC!")#光标当前的位置插入 15 16 #将任何格式的索引号统一为元组(行、列)的格式输出 17 start = 1.0 18 while True: 19 pos = text.search("o",start,stopindex=END)#从开始到结束全文搜索 20 if not pos: 21 break 22 print("找到了,位置是:",getIndex(text,pos)) 23 start = pos + "+1c"#将start指向找到的字符位置的下一个字符,以便进行下一次搜索 24 25 mainloop()

Text组件内部有一个栈专门用于记录内容的每次变动,所以每次“撤销”操作就是一次弹栈操作,“恢复”就是再次压栈。

实例6:撤销

1 fr tkinter import * 2 3 #将任何格式的索引号统一为元组(行,列)的格式输出 4 def show(): 5 text.edit_undo() 6 7 root = Tk() 8 text = Text(root,width=30,height=5,undo=True) 9 text.pack() 10 text.insert(INSERT,"I love FishC") 11 12 Button(root,text="撤销",cmand=show).pack() 13 14 mainloop()

实例7:每次撤销一个字符

1 fr tkinter import * 2 3 def callback(event): 4 text.edit_separator() 5 6 def show(): 7 text.edit_undo()#执行撤回操作 8 9 root = Tk() 10 11 #autoseparators表示一次完整的操作结束后自动插入“分隔符”,此处设置为False 12 text = Text(root,width=30,height=5,autoseparators=False,undo=True,maxundo=10) 13 text.pack() 14 15 text.insert(INSERT,"I love FishC!") 16 text.bind('<Key>',callback)#每次有输入就插入一个“分隔符” 17 18 Button(root,text="撤销",cmand=show).pack() 19 20 mainloop()



上一篇:Python基础入门学习笔记 053 论一只爬虫的自我修养
下一篇:Python基础入门学习笔记 074 GUI的终极选择:Tkinter11
python
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素