首页 > 编程语言 >Python基础入门学习笔记 070 GUI的终极选择:Tkinter7

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

时间:2023-08-23 11:55:24浏览次数:59  
标签:INSERT 1.7 070 Python text GUI tag import root

实例1:添加Tags

 1 from 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.com!")#光标当前的位置插入
 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 from 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.com!")#光标当前的位置插入
 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 from 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.com!")#光标当前的位置插入
 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 from tkinter import *
 2 import webbrowser#导入网页模块
 3 
 4 def show_hand_cursor(event):
 5     text.config(cursor="arrow")
 6 
 7 def show_arrow_cursor(event):
 8     text.config(cursor="xterm")
 9 
10 def click(event):
11     webbrowser.open("http://www.fishc.com")
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.com!")#光标当前的位置插入
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","<Button-1>",click)
30 
31 mainloop()

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

 1 from 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.com!")#光标当前的位置插入
21 #注意,行号从1开始,列号则从0开始
22 #获取文本内容
23 contents=text.get(1.0,END)
24 
25 sig = getSig(contents)
26 
27 Button(root,text="检查",command=check).pack()
28 
29 mainloop()

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

 1 from 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.com!")#光标当前的位置插入
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 from 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="撤销",command=show).pack()
13 
14 mainloop()

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

 1 from 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="撤销",command=show).pack()
19 
20 mainloop()

标签:INSERT,1.7,070,Python,text,GUI,tag,import,root
From: https://www.cnblogs.com/ybqjymy/p/17650828.html

相关文章

  • Python中的if-else语法糖
    Python中的if语句是用于条件控制的一种语法结构,可以根据条件的真假来决定程序的执行路径。在Python中,if语句的语法如下:if条件:执行语句块其中,条件是一个返回布尔值的表达式,如果条件为True,那么执行语句块中的代码;如果条件为False,则跳过语句块。除了基本的if语句外,Python还......
  • Python基础入门学习笔记 067 GUI的终极选择:Tkinter4
    实例1:1fromtkinterimport*23root=Tk()#创建主窗口4e=Entry(root)#在主窗口中插入输入框5e.pack(padx=20,pady=20)67e.delete(0,END)#清空输入框8e.insert(0,"默认文本...")#设置输入框内容910mainloop() 实例2:1fromtkinterimp......
  • Python基础入门学习笔记 068 GUI的终极选择:Tkinter5
    Listbox组件如果需要提供选项给用户选择,单选可以用Radiobutton组件,多选可以用Checkbutton,如果提供的选项非常多,可以考虑使用Listbox组件。Listbox是以列表的形式显示出来,并支持滚动条操作。实例1:1fromtkinterimport*23root=Tk()#创建主窗口45theLB=Listb......
  • Python基础入门学习笔记 069 GUI的终极选择:Tkinter6
    Text组件Text(文本)组件用于显示和处理多种任务。虽然该组件的主要目的是显示多行文本,但它常常也被用于作为简单的文本编辑器和网页浏览器使用。实例1:插入内容1fromtkinterimport*23root=Tk()4text=Text(root,width=30,height=2)5text.pack()6#INSERT......
  • Python基础入门学习笔记 066 GUI的终极选择:Tkinter3
    实例1:Checkbutton组件1fromtkinterimport*23root=Tk()4#需要一个Tkinter变量,用于表示该按钮是否被选中5v=IntVar()6c=Checkbutton(root,text="测试一下",variable=v)78c.pack()9#如果被选中,那么变量v被赋值为1,否则为010#可以用个Label......
  • Pybind11:使用C++编写Python模块
    放假摆了一周了。看论文实在不是什么有意思的活。这两天研究了一下Pybind11的用法。使用C/C++和Python混合编程的想法很早就有了,在大一的一次比赛时曾经实践过(虽然不是我写的),当时获得了比较显著的性能提升。但是当时用的是Swig,据队友说Swig对于NumPy的支持极为阴间,当时调试花了好......
  • Python基础入门学习笔记 064 GUI的终极选择:Tkinter
    >>>importtkinter #Tkinter是python默认的GUI库,导入Tkinter模块>>> 实例1:1importtkinterastk23root=tk.Tk()#创建一个主窗口,用于容纳整个GUI程序4root.title("FishCDemo")#设置主窗口对象的标题栏56#添加一个Label组件,可以显示文本、图标或者图......
  • Python基础入门学习笔记 065 GUI的终极选择:Tkinter2
    实例1:Label组件显示文字与gif图片1#导入tkinter模块的所有内容2fromtkinterimport*34#创建主窗口5root=Tk()6#创建一个文本Label对象,文字为左对齐,离左边边框距离为107textLabel=Label(root,8text="您下载的影片含有未成年人......
  • Python基础入门学习笔记 048 魔法方法:迭代器
    迭代的意思类似于循环,每一次重复的过程被称为一次迭代的过程,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。提供迭代方法的容器称为迭代器(如序列(列表、元组、字符串)、字典等)。对一个容器对象调用iter()就得到它的迭代器,调用next()迭代器就会返回下一个值。入托迭代器没......
  • Python基础入门学习笔记 049 乱入:生成器
    所谓协同程序,就是可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始。生成器可以暂时挂起函数,并保留函数的局部变量等数据,然后在再次调用它的时候,从上次暂停的位置继续执行下去。一个函数中如果有yield语句,则被定义为生成器。实例1:......