tkinter -- Text (3)

自定义 tag 的两个内置属性

tag.first:tag 之前插入文本,此文本不包含在这个 tag 中

tag.last:tag 之后插入文本,此文本包含在这个 tag 中

代码:

import tkinter as tk
root = tk.Tk()
t = tk.Text(root)

# 创建一个TAG,其前景色为蓝色
t.tag_config('b', foreground='blue')
for i in range(10):
    t.insert(1.0, '123465789\n')
# 自定义两个 mark,并使用它们来指定添加 tag 的文本块
t.mark_set('ab', '3.1')
t.mark_set('cd', tk.END)
t.tag_add('b', 'ab', 'cd')

# 删除 tag 'b',注意这个操作是在 tag_add 之后进行的
# 在 tag('b')之前插入'first'
t.insert('b.first', 'first')

# 在 tag('b')之后插入'last'
t.insert('b.last', 'last')
t.pack()
root.mainloop()

结果:

注意:first 没有使用 tag('b')属性,last 使用了 tag('b')属性

在 Text 中创建按钮

使用 window_create 在 Text 内创建一 widget

代码:

import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
for i in range(10):
    t.insert(1.0, '13246789\n')

def printtext():
    print('button in text')

bt = tk.Button(t, text='button', command=printtext)
# 在 Text 内创建一个按钮
t.window_create('2.0', window=bt)
t.pack()
root.mainloop()

结果:

注意:使用 window_create,而不是使用 insert('2.0',bt);pack()也不用调用;点击这个按钮,打印出'button in text',证明这个按钮是可以正常工作的

在 Text 中创建一个图像

使用 window_create 在 Text 内创建一 widget

代码;

import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
for i in range(10):
    t.insert(1.0, '13246789\n')

# 使用PhotoImage 进行测试
bm = tk.PhotoImage(file='444.gif')
t.image_create('2.0', image=bm)
t.pack()
# 打印的图像名称
print(t.image_names())
root.mainloop()

效果:

绑定 tag 与事件

代码:

import tkinter as tk
root = tk.Tk()
t = tk.Text(root)
for i in range(10):
    t.insert(1.0, '13246789\n')

# 创建一个 tag
t.tag_config('a', foreground='blue', underline=1)
# Enter 的回调函数
def entertag(event):
    print('enter event')
# 绑定 tag('a')与事件('<Enter>')
t.tag_bind('a', '<Enter>', entertag)
t.insert(2.0, 'Enter event\n', 'a')
t.pack()
root.mainloop()

结果:

注意:使用 tag_bind 绑定 tag 与事件,当此事件在 tag 上发生时便就会调用这个 tag 的回调函数

因为使用了 Enter 事件,此事件含有一个参数,故将 enterTag 加了一个参数,程序中不使用此参数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Golang 解析base64网络传输如何解析

今天在给服务器做压力测试的流程的时候,遇到了个Golang语言的解析问题;涉及到的主要是解析Base64编码问题,同时也看了底层的源码以下是自己实现的解析: ...

48060
来自专栏Android小菜鸡

H5监听Iframe内部点击实现正常跳转

近期开发中,在布局中使用了IFrame做主页切换,大概布局就是底部一个选择卡,往上就是多个IFrame,点击选择卡切换页面。

89030
来自专栏CDA数据分析师

Excel:Ctrl+F人人都会用,但这3个技巧99%的人不知道

本文为简书作者傲看今朝原创,CDA数据分析师已获授权。 查找与替换是Excel中最为简单实用的功能之一,几乎用过Excel的人都知道这个功能,也都会简单使用这个...

23150
来自专栏守望轩

Visual Studio 2008 每日提示(二)

#011、 全屏模式 原文地址:http://blogs.msdn.com/saraford/archive/2007/08/09/did-you-know-...

31080
来自专栏美奔科技

向Windows 服务器传输大文件

https://support.microsoft.com/zh-cn/help/2258090/copying-files-larger-than-2-gb-...

1K20
来自专栏超然的博客

jquery中动态新增的元素节点无法触发事件解决办法

  在使用jquery中动态新增的元素节点时会发现添加的事件是无法触发的,我们下面就为各位来详细的介绍此问题的解决办法.

10720
来自专栏Angular&服务

防止微信小程序页面多次跳转

10530
来自专栏Modeng的专栏

更好的理解 Script 标签元素

我们在 《Javascript简史》这遍文章中说过,「Javascript」这门语言是由 Netscape开发而来,当初开发的时候为了能让 「Javascrip...

11820
来自专栏每日一篇技术文章

weex-26-dom模块

我们经常会看到上图所示的需求,当我们将列表向下滑动一段时间后,想要立刻回到顶部,这个时候就要用到本节所示的功能。

24530
来自专栏前端人人

React第三方组件4(状态管理之Reflux的使用④TodoList下)

本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React第三方组件4(状态管理之Reflux的使用①...

35280

扫码关注云+社区

领取腾讯云代金券