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','<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控件的更多相关文章
- Python Tkinter基础控件入门实例
分享一个Python Tkinter基础控件用法的入门例子,包括窗口的显示.显示内置图片.弹出窗口.菜单等. 例子,Python Tkinter基础控件的用法 # -*- coding: utf-8 ...
- Python Tkinter 基础控件学习
# -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get ...
- QlikView TEXT控件固定显示图片
QlikView 的Text控件不仅可以用来展示文本也可以用来展示图片. 数据表 2个列,一个是 关联字段(Country),另外一个保存图片物理路径. TEXT控件固定显示图片 ,编辑控件表达式 = ...
- UGUI Text控件
学习UGUI的Text控件,用于显示文本!. 基本属性就不再啰嗦了! Alignment: 文字以 水平和垂直 对齐方式, Horizontal Overflow: 水平 Wrap: 文字大小和数量 ...
- input(Text)控件作为填空输入,但运行后,有曾经输入的记录显示,用autocomplete="off"解决
系统中,有设计填空题,原来程序中,用input(Text)控件, <input type="text" name="NO<%=rs("id&qu ...
- fastreport好象将想合并哪个单元就将那一列的TEXT控件的Merge的属性设成True就可以了
好象将想合并哪个单元就将那一列的TEXT控件的Merge的属性设成True就可以了 可以用FASTREPORT中的分组打印,你看一下里面的DEMO,里面都有的, 高版本的有suppressRepeat ...
- duilib 修复Text控件无法设置宽度的bug,增加自动加算宽度的属性
转载请说明原出处,谢谢~~: 今天有朋友反映CTextUI控件无法设置宽度,于是修复了这个bug,顺便给Text控件增加了一个自动计算宽度的属性,描述如下 <Attribute name=&qu ...
- tkinter gui控件回调和grid布局优化
0.引子 Tkinter 是 Python 的标准 GUI 库.Python 使用 Tkinter 可以快速的创建 GUI 应用程序.由于 Tkinter 是内置到 python 的安装包中.只要安装 ...
- [Python] wxPython 基本控件 (转)
转自:http://www.cnblogs.com/wangjian8888/p/6028777.html 一.静态文本控件 wx.StaticText(parent, id, label, pos= ...
随机推荐
- SOAP消息头的处理
SOAP消息头的处理 WebService学习总结(四)——调用第三方提供的webService服务 SOAP中 RPC/ENC 为啥被抛弃
- Web4个实验题目DOM+JS
实验目的: 1. 掌握DOM对象的基本语法 2. 掌握getElementById函数 3. 掌握getElementsByTagName函数 来源http://www.cnblogs.com/xia ...
- jQuery:jQuery性能优化28条建议
http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...
- 编写高质量代码_改善C++程序的150个建议 读书笔记
这几天看了下这本书<编写高质量代码_改善C++程序的150个建议>,觉的蛮有收获的,再次记录下自己以前不清晰的知识点,以供学习. 编写符合标准的main函数 C语言标准规定了main函数的 ...
- [Learn AF3]第三章 App Framework 3组件之Panel:afui的核心
Panel,afui的核心组件 组件名称:Panel 使用说明:按照官方的说法,panel组件是af3的“核心(heart of the ui)”,panel用于构造应用中独立的内容展示区域, ...
- 基于bootstrap-multiselect.js的下拉框联动
背景:当option特别多时,一般的下拉框选择起来就有点力不从心了,所以使用multiselect是个很好的选择,可以通过输入文字来选择选项很方便,但是有一个需要下拉框联动,网上找了半天才找到解决方法 ...
- 远程执行命令和文件分发shell脚本
deploy.conf node01,all,other,datanode,journalnode,zookeeper, node02,all,other,datanode,journalnode,z ...
- NAS 创建大文件
不是很懂,但是管用.先记录下来. http://www.111cn.net/sys/linux/55537.htm
- mysql中使用show variables同时查询多个参数值?show variables的使用?
需求描述: 今天在查mysq关于连接数的问题,想要通过一个show variables命令同时查出来多个值.在此记录下. 操作过程: 1.通过show variables语句的like可以匹配多个值或 ...
- 纯CSS实现瀑布流布局
https://www.w3cplus.com/css/pure-css-create-masonry-layout.html