Tkinter教程之Text(1)篇
本文转载自:http://blog.csdn.net/jcodeer/article/details/1811343
'''Tkinter教程之Text篇(1)'''
'''1.创建第一个Text'''
from Tkinter import *
root = Tk()
t = Text(root)
t.pack()
root.mainloop()
#root中含有一Text控件,可以在这个控件内输入文本,可以使用Ctrl+C/V向Text内添加剪切板上的内容(文本),不接受Ctrl+Z执行操作
'''2.向Text中添加文本'''
#insert方法添加文本内容
from Tkinter import *
root = Tk()
t = Text(root)
#向第一行,第一列添加文本0123456789
t.insert(1.0,'0123456789')
#向第一行第一列添加文本ABCDEFGHIJ
t.insert(1.0,'ABCDEFGHIJ')
t.pack()
root.mainloop()
#insert的第一个参数为索引;第二个为添加的内容
'''3.使用line.col索引添加内容'''
#使用indexes来添加Text的内容
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
t = Text(root)
# 向第一行,第一列添加文本0123456789
t.insert(1.0,'0123456789')
t.insert('2.end',' ')
# 向第一行第一列添加文本ABCDEFGHIJ
t.insert(2.5,'ABCDEFGHIJ')
t.pack()
root.mainloop()
# 可以看到使用indexes时,如果其值超过了Text的buffer值,程序不会抛出异常,它会使用向给定值靠近。
'''mark是用来表示在Text中位置的一类符号'''
'''4.使用内置的mark控制添加位置'''
#演示了内置的mark:INSERT/CURRENT/END/SEL_FIRST/SEL_LAST的用法
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
t = Text(root)
#向Text中添加10行文本
for i in range(1,10):
t.insert(1.0,'0123456789 ')
#定义各个Button的回调函数,这些函数使用了内置的mark:INSERT/CURRENT/END/SEL_FIRST/SEL_LAST
def insertText():
t.insert(INSERT,'jcodeer')
def currentText():
t.insert(CURRENT,'jcodeer')
def endText():
t.insert(END,'jcodeer')
def selFirstText():
t.insert(SEL_FIRST,'jcodeer')
def selLastText():
t.insert(SEL_LAST,'jcodeer')
#INSERT
Button(root,
text = 'insert jcodeer at INSERT',
command = insertText
).pack(fill = X)
#CURRENT
Button(root,
text = 'insert jcodeer at CURRENT',
command = insertText
).pack(fill = X)
#END
Button(root,
text = 'insert jcodeer at END',
command = endText
).pack(fill = X)
#SEL_FIRST
Button(root,
text = 'insert jcodeer at SEL_FIRST',
command = selFirstText
).pack(fill = X)
#SEL_LAST
Button(root,
text = 'insert jcodeer at SEL_LAST',
command = selLastText
).pack(fill = X)
t.pack()
root.mainloop()
#几个内置的mark:
#INSERT:光标的插入点
#CURRENT:鼠标的当前位置所对应的字符位置
#END:这个Text buffer的最后一个字符
#SEL_FIRST:选中文本域的第一个字符,如果没有选中区域则会引发异常
#SEL_LAST:选中文本域的最后一个字符,如果没有选中区域则会引发 异常
'''5.使用表达式来增强mark'''
#表达式(expression)可以个性任何的Indexes,如下:
'''
+ count chars :前移count字符
- count chars :后移count字符
+ count lines :前移count行
- count lines :后移count行
linestart:移动到行的开始
linesend:移动到行的结束
wordstart:移动到字的开始
wordend:移动到字的结束
'''
# 演示修饰符表达式的使用方法,如何与当前可用的indexes一起使用
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
t = Text()
# 向第一行,第一列添加文本0123456789
for i in range(1,10):
t.insert(1.0,'0123456789 ')
a = 'test_mark'
def forwardChars():
# 直接连接字符串
# t.mark_set(a,CURRENT + '+ 5 chars')
t.mark_set(a,CURRENT + '+5c')
def backwardChars():
# t.mark_set(a,CURRENT + '- 5 chars')
t.mark_set(a,CURRENT + '-5c')
def forwardLines():
# t.mark_set(a,CURRENT + '+ 5 lines)
t.mark_set(a,CURRENT + '+5l')
def backwardLines():
# t.mark_set(a,CURRENT + '- 5 lines)
t.mark_set(a,CURRENT + '-5l')
def lineStart():
# 注意linestart前面的那个空格不可省略
t.mark_set(a,CURRENT + ' linestart')
def lineEnd():
# 注意lineend前面的那个空格不可省略
t.mark_set(a,CURRENT + ' lineend')
def wordStart():
# 移动到当前字的开始。
t.mark_set(a,CURRENT + ' wordstart')
def wordend():
# 移动到当前字的结束
t.mark_set(a,CURRENT + ' wordend')
# mark:test_mark默认值为CURRENT
t.mark_set(a,CURRENT)
Button(root,text = 'forward 5 chars',command = forwardChars).pack(fill = X)
Button(root,text = 'backward 5 chars',command = backwardChars).pack(fill = X)
Button(root,text = 'forward 5 lines',command = forwardLines).pack(fill = X)
Button(root,text = 'backward 5 lines',command = backwardLines).pack(fill = X)
Button(root,text = 'line start',command = lineStart).pack(fill = X)
Button(root,text = 'line end',command = lineEnd).pack(fill = X)
Button(root,text = 'word start',command = lineEnd).pack(fill = X)
Button(root,text = 'word end',command = lineEnd).pack(fill = X)
# 测试三个位置的不同,CURRENT可以得知是当前光标的位置;mark就表示mark的位置了,INSERT好像一植都在1.0处没有改变。
def insertText():
t.insert(INSERT,'insert')
def currentText():
t.insert(CURRENT,'current')
def markText():
t.insert(a,'mark')
Button(root,text = 'insert jcodeer.cublog.cn',command = insertText).pack(fill = X)
Button(root,text = 'current jcodeer.cublog.cn',command = currentText).pack(fill = X)
Button(root,text = 'mark jcodeer.cublog.cn',command = markText).pack(fill = X)
t.pack()
root.mainloop()
Tkinter教程之Text(1)篇的更多相关文章
- Tkinter教程之Text(2)篇
本文转载自:http://blog.csdn.net/jcodeer/article/details/1811347 '''Tkinter教程之Text(2)篇''''''6.使用tag来指定文本的属 ...
- 转:Tkinter教程之Text(2)篇
'''Tkinter教程之Text(2)篇''''''6.使用tag来指定文本的属性'''#创建一个指定背景颜色的TAG# -*- coding: cp936 -*-from Tkinter impo ...
- Tkinter教程之Text篇(3)
本文转载自:http://blog.csdn.net/jcodeer/article/details/1811348 '''Tkinter教程之Text篇(3)''''''14.自定义tag的两个内置 ...
- Tkinter教程之Text篇(1)
from Tkinter import *root = Tk()t = Text() for i in range(1,10): t.insert(1.0,'0123456789\n')a = 'te ...
- Tkinter教程之Event篇(3)
本文转载自:http://blog.csdn.net/jcodeer/article/details/1823550 '''Tkinter教程之Event篇(3)''''''11.两个事件同时绑定到一 ...
- Tkinter教程之Event篇(2)
本文转载自:http://blog.csdn.net/jcodeer/article/details/1823548 '''Tkinter教程之Event篇(2)''''''5.测试离开(Leave) ...
- Tkinter教程之Event篇(1)'
本文转载自:http://blog.csdn.net/jcodeer/article/details/1823544 ''Tkinter教程之Event篇(1)'''# 事件的使用方法'''1.测试鼠 ...
- Tkinter教程之Grid篇
本文转载自:http://blog.csdn.net/jcodeer/article/details/1813196 '''Tkinter教程之Grid篇'''# Tkinter参考中最推荐使用的一个 ...
- Tkinter教程之Pack篇
本文转载自:http://blog.csdn.net/jcodeer/article/details/1813077 '''Tkinter教程之Pack篇'''#Pack为一布局管理器,可将它视为一个 ...
随机推荐
- iOS 开发--github的demo
令人惊讶的是,YYText 虽然代码量很大(超过一万行),但它只是 ibireme 的作品之一.ibireme 利用业余时间完成了 YYKit 工具库,包括: YYModel — 高性能的 iOS J ...
- 微信开发之——Php批量生成带参数的二维码
带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧. 具体接口说明请参见,微信公众平 ...
- Android AIDL-跨进程
Android在设计理念上强调组件化,组件之间的依赖性很小.我们往往发一个Intent请求就可以启动另一个应用的Activity,或者一个你不知道在哪个进程的Service,或者可以注册一个广播,只要 ...
- 虚函数(virtual)为啥不能是static
静态成员函数,可以不通过对象来调用,即没有隐藏的this指针. virtual函数一定要通过对象来调用,即有隐藏的this指针. static成员没有this指针是关键!static function ...
- ios UICollectionView滑动时操作
点开UICollectionViewDelegate,发现有@protocol UICollectionViewDelegate <UIScrollViewDelegate>. 所以只要实 ...
- Struts2的简单案例
第一步:首先下载struts2的架包(链接地址:http://download.csdn.net/detail/ahy1024/4626028) 第二步:新建web project项目 DemoStr ...
- Android开发之获取系统管理权限,即DevicePolicyManager和DeviceAdminReceiver的使用
参考:http://www.cnblogs.com/androidez/archive/2013/02/17/2915020.html 1.创建AdminReceiver,继承DeviceAdminR ...
- Android开发之执行定时任务AlarmManager,Timer,Thread
1.Thread:使用线程方式2.Timer是java的特性3.AlarmManager:AlarmManager将应用与服务分割开来后,使得应用程序开发者不用 关心具体的服务,而是直接通过Alarm ...
- [51NOD1105]第k大的数(二分答案)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1105 先排序,二分上下界分别是最小的两个数和最大的两个数的乘积 ...
- Effective C++学习笔记 条款06:如不想使用编译器自动生成的函数,就该明确拒绝
一.为驳回编译器自动提供的机能,可将相应成员函数声明为private并且不予实现.(如果你仅仅是自己不实现的话,编译器会帮你实现) 如: class A { public: A(const strin ...