在本文中,將介紹如何使用 tkinter Text 多行文本框小部件向應用程序添加文本編輯器。
Text 小部件允許顯示和編輯多行文本,還支持嵌入圖像和鏈接。
要創(chuàng)建多行文本框,請使用以下構(gòu)造函數(shù):
text = tk.Text(master, **option)
創(chuàng)建多行文本框
以下示例中,使用 Text 多行文本框小部件,在窗口上創(chuàng)建一個可以輸入 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()
還可以使用標簽設(shè)置文本格式,可以定義任意數(shù)量的標記,同一個 Tag 可以用于多個不同的范圍。
以下代碼定義了 a、b 兩個 Tag,分別為字符串“信息”和“Python”設(shè)置不同的樣式。
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()
要防止文本框的內(nèi)容被修改,可以通過將參數(shù)設(shè)置禁用編輯。
text['state'] = 'disabled'
要重新啟用編輯,可以設(shè)置以下參數(shù)。
text['state'] = 'normal'
讀取多行文本框的內(nèi)容
要讀取多行文本框的內(nèi)容,使用 get() 方法。
text_content = text.get('1.0','end')
該方法接受兩個參數(shù)。第一個參數(shù)是起始位置,第二個參數(shù)是結(jié)束位置。
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")
上述代碼返回文本的前三行。
刪除多行文本框的內(nèi)容
要讀取多行文本框的內(nèi)容,使用 delete() 方法。
text_content = text.delete('1.0','end')
與 get() 方法類似,該方法接受兩個參數(shù)。第一個參數(shù)是起始位置,第二個參數(shù)是結(jié)束位置。
使用多行文本框顯示圖像
要使用多行文本框顯示圖像,使用 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 多行文本框小部件選項
參數(shù) | 說明 |
---|
bd | 邊框?qū)挾取?/td> |
bg | 背景顏色。 |
exportselection | 導出窗口管理器選定的文本。默認值為0。 |
cursor | 鼠標指針類型。 |
font | 文本的字體。 |
fg | 文本顏色。 |
height | 垂直尺寸,行數(shù)。 |
highlightbackground | 高亮背景顏色。 |
higlightthickness | 高亮寬度,默認值為 1。 |
highlightcolor | 高亮顏色。 |
insertbackground | 插入光標的顏色。 |
padx | 水平填充。 |
pady | 垂直填充。 |
relief | 邊框類型。 |
state | 設(shè)置為 DISABLED,則對鼠標和鍵盤無響應。 |
tabs | 使用制表符定位文本。 |
width | 組件的寬度,以字符為單位。 |
wrap | 自動換行。 |
xscrollcommand | 水平滾動。 |
yscrollcommand | 垂直滾動。 |
spacing1 | 文本每行上方插入的垂直間距。 |
spacing2 | 邏輯換行時,文本行之間添加額外的垂直間距。默認值為 0。 |
spacing3 | 文本每行下方插入的垂直間距。 |
selectbackground | 所選文本的背景色。 |
selectborderwidth | 所選文本周圍的邊框?qū)挾取?/td> |