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= ...
随机推荐
- gitlab的安装和基本维护
基本介绍 GitLab是一个自托管的Git项目仓库,可以自己搭建个人代码管理的仓库,功能与github类似. 安装 操作系统:CentOS6.5 gitlab官网下载安装地址:https://abou ...
- perl 查看某个模块的安装路径
perldoc 命令可以查看某个模块的安装路径 命令: perldoc -l Bio::Seq 返回值如下: /usr/local/share/perl5/Bio/Seq.pm
- C# IP地址与数字之间的互转
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Te ...
- 混合线路接入时,360、QQ管家等测速显示电信IP或任意线路的IP
最近很多人QQ上问我,我有电信.联通接入,用户测速的时候有的时候显示联通的IP,可是我想让他显示为电信的IP,怎么办? 3年前开始使用联通的线路时,就这样设置了,有些人还拿这个设置当宝贝了???? 其 ...
- SOFA企业应用框架
前言 从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂.导致复杂性的原因有很多,如果从架构的层面看, ...
- 设置时间同步(Linux,Solaris)
经过网上各种搜索,将LINUX平台及solaris平台的时间同步整理如下: 主机情况:应用:2台LINUX服务器 redhat 5.5 内网数据库:2台Solaris服务器 Solaris 10 内网 ...
- scala分析数据作图
参考网址:https://stackoverflow.com/questions/36984780/spark-shell-how-to-use-breeze-viz 刚开始按照网上的教程只导入了 两 ...
- SqlServer2008基础知识:安全与权限
分享自 儒雅的男人blog http://www.cnblogs.com/yushaoye201314/archive/2013/04/19/3031203.html 好文,转载收藏 这两天在调用Mi ...
- Oracle统计每条数据的大小
怎么查询一条记录到底占了多少空间呢,随便用一个表举例(如上图),就着解决眼前问题的原则(oracle),网上简单查了查,发现生效了,就没深入了解了,包括其它数据库怎么解决,都没做研究.Oracle下, ...
- javascript的console命令
1.分类输出 console.log('文字信息'); console.info('提示信息'); console.warn('警告信息'); console.error('错误信息'); 2.分组输 ...