Python GUI 编程:tkinter 初学者入门指南——多行文本框

在本文中,将介绍如何使用 tkinter Text 多行文本框小部件向应用程序添加文本编辑器。

Text 小部件允许显示和编辑多行文本,还支持嵌入图像和链接。

要创建多行文本框,请使用以下构造函数:

text = tk.Text(master, **option)

创建多行文本框

以下示例中,使用 Text 多行文本框小部件,在窗口上创建一个可以输入 10 行的文本框。

import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')

text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)

root.mainloop()

使用多行文本框显示文字

要在多行文本框显示文字,可以使用 insert() 方法。此方法在指定的索引位置插入字符串。

语法格式:

text.insert(index, string)

示例:

import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')

text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
text.insert(tk.INSERT, '信息科技云课堂\nPython之家')

root.mainloop()

还可以使用标签设置文本格式,可以定义任意数量的标记,同一个 Tag 可以用于多个不同的范围。

以下代码定义了 a、b 两个 Tag,分别为字符串“信息”和“Python”设置不同的样式。

import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')

text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
text.insert(tk.INSERT, '信息科技云课堂\nPython之家')

text.tag_add("a", "1.0", "1.2")
text.tag_add("b", "2.0", "2.6")
text.tag_config("a", background = "yellow", foreground = "blue")
text.tag_config("b", background = "black", foreground = "green")
root.mainloop()

要防止文本框的内容被修改,可以通过将参数设置禁用编辑。

text['state'] = 'disabled'

要重新启用编辑,可以设置以下参数。

text['state'] = 'normal'

读取多行文本框的内容

要读取多行文本框的内容,使用 get() 方法。

text_content = text.get('1.0','end')

该方法接受两个参数。第一个参数是起始位置,第二个参数是结束位置。

import tkinter as tk
from tkinter.messagebox import showinfo
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')
def Take_input():
    msg = text.get("1.7", "end")
    showinfo(title='欢迎访问', message=msg)
    
text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
text.insert(tk.INSERT, '信息科技云课堂Python之家')

Display = tk.Button(root, height = 2, width = 20, text ="读取", command = lambda:Take_input())
Display.pack()

root.mainloop()

text.get("1.0", "end - 1 chars")

上面的代码返回所有文本,但最后一个换行符除外。

text.get("1.0", "end - 1 lines")

上述代码返回所有文本,但最后一行除外。

text.get("1.0", "1.0 lineend")

上述代码返回文本的第一行。

text.get("1.0", "1.0 + 3 lines")

上述代码返回文本的前三行。

删除多行文本框的内容

要读取多行文本框的内容,使用 delete() 方法。

text_content = text.delete('1.0','end')

与 get() 方法类似,该方法接受两个参数。第一个参数是起始位置,第二个参数是结束位置。

使用多行文本框显示图像

要使用多行文本框显示图像,使用 image_create() 方法。

import tkinter as tk
root = tk.Tk()
root.geometry('600x400+200+200')
root.title('Text 多文本框演示')

text = tk.Text(root, height=10, font=("Arial", 20))
text.pack(padx=10, pady=10)
photo=tk.PhotoImage(file='logo.png')
text.image_create(tk.INSERT, image=photo)
text.insert(tk.INSERT, 'Python之家')

root.mainloop()

Text 多行文本框小部件选项

参数说明
bd边框宽度。
bg背景颜色。
exportselection导出窗口管理器选定的文本。默认值为0。
cursor鼠标指针类型。
font文本的字体。
fg文本颜色。
height垂直尺寸,行数。
highlightbackground高亮背景颜色。
higlightthickness高亮宽度,默认值为 1。
highlightcolor高亮颜色。
insertbackground插入光标的颜色。
padx水平填充。
pady垂直填充。
relief边框类型。
state设置为 DISABLED,则对鼠标和键盘无响应。
tabs使用制表符定位文本。
width组件的宽度,以字符为单位。
wrap自动换行。
xscrollcommand水平滚动。
yscrollcommand垂直滚动。
spacing1文本每行上方插入的垂直间距。
spacing2逻辑换行时,文本行之间添加额外的垂直间距。默认值为 0。
spacing3文本每行下方插入的垂直间距。
selectbackground所选文本的背景色。
selectborderwidth所选文本周围的边框宽度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信息科技云课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值