python tkinter控件_Python Tkinter Text控件

原文地址: http://blog.csdn.net/bemorequiet/article/details/54743889

这篇博客主要是简单的说一下Tkinter中的Text控件的相关知识。

Text文本组件用于显示和处理多行文本。在Tkinter的所有组件中,Text组件显得异常强大和灵活,它适用于处理多任务,虽然该组件的主要目的是显示多行文本,但它常常被用于作为简单的文本编辑器和网页浏览器使用。

当创建一个Text组件的时候里面是没有内容的。为了给其插入内容,可以使用insert()以及INSERT或END索引号。

1.普通的Text组件

from tkinter import *

root = Tk()

text1 = Text(root,width=30,height=4)

#INSERT索引表示在光标处插入

text1.insert(INSERT,'I Love')

#END索引号表示在最后插入

text1.insert(END,' you')

text1.pack()

mainloop()

2.插入Button之后的Text组件

from tkinter import *

root = Tk()

text1 = Text(root,width=30,height=2)

text1.pack()

text1.insert(INSERT,'I love you')

def show():

print('吆喝,我被点了一下')

#text还可以插入按钮 图片等

b1 = Button(text1,text='点我点我',command=show)

#在text创建组件的命令

text1.window_create(INSERT,window=b1)

mainloop()

3.插入图片之后的Text组件

from tkinter import *

root = Tk()

text1 = Text(root,width=100,height=30)

text1.pack()

photo = PhotoImage(file='text.gif')

def show():

#添加图片用image_create

text1.image_create(END,image=photo)

b1 = Button(text1,text='点我点我',command=show)

#添加插件用window_create

text1.window_create(INSERT,window=b1)

mainloop()

4.Text中的Indexes

Indexes(索引)是用来指向Text组件中文本的位置,跟python的序列索引一样,Text的组件索引也是对应实际字符之间的位置。值得注意的是: 行号以1开始 列号以0开始

from tkinter import *

root = Tk()

text1=Text(root,width=30,height=3)

text1.insert(INSERT,'index的练习')

#1.2到1.5的范围之间

print(text1.get(1.2,1.5))

5.Text中的Marks

Marks(标记)通常是嵌入到Text组件文本中的不可见的对象。事实上,Marks是指定字符间的位置,并跟随相应的字符一起移动。Marks有INSERT,CURRENT,和user-defined marks(用户自定义的Marks), 其中,INSERT和CURRENT是Tkinter预定义的特殊Marks,它们是不可能被删除的 INSERT(或insert)用于指定当前插入光标的位置,Tkinter会在该位置绘制一个闪烁的光标(因此并不是所有的Marks都不可见) CURRENT用于指定与鼠标坐标坐标最近最接近的位置,不过,如果你按紧鼠标任何一个按钮,它会直到你松开它才响应 使用mark_set()方法创建和移动Marks 使用mark_unset()方法删除Marks Mark事实上就是索引,用于表示位置

from tkinter import *

root = Tk()

text1 =Text(root,width=30,height=4)

text1.insert(INSERT,'I Love FishC.com')

text1.mark_set('here',1.2)

#插入是指在前面插入

text1.insert('here','插')

text1.pack()

mainloop()

6.Text中的Tags

Tags通常用于改变Text组件中内容的样式和功能,你可以修改文本的字体,尺寸和颜色,另外Tags还允许你将文本、嵌入的组件和图片与键盘相关联,除了user-defined tags(用户自定义的Tags),还有 一个预定义的特殊Tag:SEL

from tkinter import *

root = Tk()

text1 = Text(root,width=30,height=5)

text1.pack()

text1.insert(INSERT,'I Love FishC.com!')

#第一个参数为自定义标签的名字

#第二个参数为设置的起始位置,第三个参数为结束位置

#第四个参数为另一个位置

text1.tag_add('tag1','1.7','1.12','1.14')

#用tag_config函数来设置标签的属性

text1.tag_config('tag1',background='yellow',foreground='red')

#新的tag会覆盖旧的tag

mainloop()

7.Tags的事件绑定 Tags还支持事件的绑定,绑定事件使用的是tag_bind()方法,下面代码实现了将文本与鼠标事件进行绑定,当鼠标进入该文本时,鼠标样式切换为‘arrow’形态,离开文本时切换回‘xterm’形态,当触发鼠标‘左键单击操作’事件的时候,使用默认浏览器打开百度。

from tkinter import *

import webbrowser

root = Tk()

text = Text(root,width=30,height=5)

text.pack()

text.insert(INSERT,"I Love FishC.com!")

text.tag_add('link','1.7','1.16')

text.tag_config('link',foreground='blue',underline=True)

def show_arrow_cursor(event):

text.config(cursor='arrow')

def show_xterm_cursor(event):

text.config(cursor='xterm')

def click(event):

webbrowser.open('http://baidu.com')

text.tag_bind('link','',show_arrow_cursor)

text.tag_bind('link','',show_xterm_cursor)

text.tag_bind('link','',click)

mainloop()

8.使用Text组件中文本的MD5摘要来判断内容是否发生改变

from tkinter import *

import hashlib

root = Tk()

text1 = Text(root,width=30,height=5)

text1.pack()

text1.insert(INSERT,'I Love FishC.com!')

contents = text1.get('1.0',END)

def getSig(contents):

m=hashlib.md5(contents.encode())

return m.digest()

sig=getSig(contents)

def check():

contents = text1.get('1.0',END)

if sig !=getSig(contents):

print('警报,内容发生改变')

else:

print('风平浪静')

Button(root,text="检查",command=check).pack()

mainloop()

关于Text的组件的相关内容就先介绍到这里,之后会再进行补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值