温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Tkinter文本编辑控件Text怎么用

发布时间:2022-01-13 21:12:02 来源:亿速云 阅读:163 作者:iii 栏目:大数据

本篇内容主要讲解“Tkinter文本编辑控件Text怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Tkinter文本编辑控件Text怎么用”吧!

不同于Entry控件只能支持一行输入,文本编辑控件Text除了支持多行显示和编辑之外,同时支持撤销和重做,以及对于不同的部分设定不同的格式。

Enbale按钮用于切换Text控件是否允许用户的编辑操作。由于Text的表示颜色不会因为状态的不同而不同,因此代码同时会调整Text控件的表示颜色。

# change state function.def change_state():    state = text.cget('state')    if state=='disabled':        text.config(state='normal')        text.config(background='#a0ffa0')    else:        text.config(state='disabled')        text.config(background='#efefef')# change state button.eb = Button(root,text="Enable", width=8, command=change_state)eb.grid(row=0, column=0, sticky=E+W)

Delete按钮用于删除选择内容。需要注意的是Text控件取得选择内容的方式和Entry不同。

# delete selection.def delete_selection():    try:        sel_from = text.index(SEL_FIRST)        sel_to = text.index(SEL_LAST)        # delete the selection.        text.delete(sel_from, sel_to)    except TclError:        pass
# delete selection button.db = Button(root,text="Delete", width = 8, command=delete_selection)db.grid(row=0, column=1, sticky=E+W)

Undo和Redo按钮直接使用Text的方法即可实现撤销和重做功能。代码中使用了lambda表达式以简化调用。

# undo buttonundo = Button(root, text='Undo', width = 8, command=lambda:text.edit_undo())undo.grid(row=0, column = 2, sticky=E+W)#redo buttonredo = Button(root, text='Redo', width = 8, command=lambda:text.edit_redo())redo.grid(row=0, column = 3, sticky=E+W)

设置格式的按钮一共有四个,它们共用一套处理逻辑,各个按钮使用不同的参数调用同一个format函数。

# create fontsfonts = [    Font(family='SimHei', size=20, weight=BOLD),    Font(family='SimHei', size=16),    Font(family='SimSun', size=12, weight=BOLD),    Font(family='SimSun', size=12)    ]
# delete selection.def format(index):    tag_name = 'Format' + str(index)    try:        sel_from = text.index(SEL_FIRST)        sel_to = text.index(SEL_LAST)        for name in text.tag_names():            text.tag_remove(name, sel_from, sel_to)        text.tag_add(tag_name, sel_from, sel_to)        # set format at first time。        range_count = len(text.tag_ranges(tag_name))        if range_count == 2:            text.tag_config(tag_name, font=fonts[index])    except TclError:        pass
# delete selection button.for i in range(0, 4):    fb = Button(root,                text="Format" + str(i),                width = 8,                command=lambda v=i : format(v))    fb.grid(row=1, column=i, sticky=E+W)

代码中使用了tag_remove、tag_add、tag_config和tag_names方法实现了简单的格式设定功能。

最后构建Text控件。需要注意的是,undo属性的值被指定为True,以令撤销和重做功能有效。

# create text widget.text = Text(root,            undo=True,            background="#a0ffa0", foreground="#000000",            height = 10)text.grid(row=2 , column=0, columnspan=8)

一个比较遗憾的事实是,设定文本格式的动作并没有包含在重做和撤销的处理范围内。

到此,相信大家对“Tkinter文本编辑控件Text怎么用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI