原文地址: 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','<Enter>',show_arrow_cursor)
text.tag_bind('link','<Leave>',show_xterm_cursor)
text.tag_bind('link','<Button-1>',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的组件的相关内容就先介绍到这里,之后会再进行补充。

Python Tkinter Text控件的更多相关文章

  1. Python Tkinter基础控件入门实例

    分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...

  2. Python Tkinter 基础控件学习

    # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get ...

  3. QlikView TEXT控件固定显示图片

    QlikView 的Text控件不仅可以用来展示文本也可以用来展示图片. 数据表 2个列,一个是 关联字段(Country),另外一个保存图片物理路径. TEXT控件固定显示图片 ,编辑控件表达式 = ...

  4. UGUI Text控件

    学习UGUI的Text控件,用于显示文本!.  基本属性就不再啰嗦了! Alignment: 文字以 水平和垂直 对齐方式, Horizontal Overflow: 水平 Wrap: 文字大小和数量 ...

  5. input(Text)控件作为填空输入,但运行后,有曾经输入的记录显示,用autocomplete="off"解决

    系统中,有设计填空题,原来程序中,用input(Text)控件,   <input type="text" name="NO<%=rs("id&qu ...

  6. fastreport好象将想合并哪个单元就将那一列的TEXT控件的Merge的属性设成True就可以了

    好象将想合并哪个单元就将那一列的TEXT控件的Merge的属性设成True就可以了 可以用FASTREPORT中的分组打印,你看一下里面的DEMO,里面都有的, 高版本的有suppressRepeat ...

  7. duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性

    转载请说明原出处,谢谢~~: 今天有朋友反映CTextUI控件无法设置宽度,于是修复了这个bug,顺便给Text控件增加了一个自动计算宽度的属性,描述如下 <Attribute name=&qu ...

  8. tkinter gui控件回调和grid布局优化

    0.引子 Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序.由于 Tkinter 是内置到 python 的安装包中.只要安装 ...

  9. [Python] wxPython 基本控件 (转)

    转自:http://www.cnblogs.com/wangjian8888/p/6028777.html 一.静态文本控件 wx.StaticText(parent, id, label, pos= ...

随机推荐

  1. SOAP消息头的处理

    SOAP消息头的处理 WebService学习总结(四)——调用第三方提供的webService服务 SOAP中 RPC/ENC 为啥被抛弃

  2. Web4个实验题目DOM+JS

    实验目的: 1. 掌握DOM对象的基本语法 2. 掌握getElementById函数 3. 掌握getElementsByTagName函数 来源http://www.cnblogs.com/xia ...

  3. jQuery:jQuery性能优化28条建议

    http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...

  4. 编写高质量代码_改善C++程序的150个建议 读书笔记

    这几天看了下这本书<编写高质量代码_改善C++程序的150个建议>,觉的蛮有收获的,再次记录下自己以前不清晰的知识点,以供学习. 编写符合标准的main函数 C语言标准规定了main函数的 ...

  5. [Learn AF3]第三章 App Framework 3组件之Panel:afui的核心

    Panel,afui的核心组件 组件名称:Panel     使用说明:按照官方的说法,panel组件是af3的“核心(heart of the ui)”,panel用于构造应用中独立的内容展示区域, ...

  6. 基于bootstrap-multiselect.js的下拉框联动

    背景:当option特别多时,一般的下拉框选择起来就有点力不从心了,所以使用multiselect是个很好的选择,可以通过输入文字来选择选项很方便,但是有一个需要下拉框联动,网上找了半天才找到解决方法 ...

  7. 远程执行命令和文件分发shell脚本

    deploy.conf node01,all,other,datanode,journalnode,zookeeper, node02,all,other,datanode,journalnode,z ...

  8. NAS 创建大文件

      不是很懂,但是管用.先记录下来. http://www.111cn.net/sys/linux/55537.htm

  9. mysql中使用show variables同时查询多个参数值?show variables的使用?

    需求描述: 今天在查mysq关于连接数的问题,想要通过一个show variables命令同时查出来多个值.在此记录下. 操作过程: 1.通过show variables语句的like可以匹配多个值或 ...

  10. 纯CSS实现瀑布流布局

    https://www.w3cplus.com/css/pure-css-create-masonry-layout.html