Tkinter 之Text文本框標簽


一、參數說明

語法 作用
t=tk.Text()
t.insert(END,'插入的文本信息')
INSERT:光標的插入點
CURRENT:鼠標的當前位置所對應的字符位置
END:這個Textbuffer的最后一個字符
SEL_FIRST:選中文本域的第一個字符,如果沒有選中區域則會引發異常
SEL_LAST:選中文本域的最后一個字符,如果沒有選中區域則會引發異常
t.delete(mark1, mark2) INSERT:光標的插入點 CURRENT:鼠標的當前位置所對應的字符位置
END:這個Textbuffer的最后一個字符
SEL_FIRST:選中文本域的第一個字符,如果沒有選中區域則會引發異常
SEL_LAST:選中文本域的最后一個字符,如果沒有選中區域則會引發異常

tag_config參數:

background  指定該 Tag 所描述的內容的背景顏色
注意:bg 並不是該選項的縮寫,在這里 bg 被解釋為 bgstipple 選項的縮寫
bgstipple  指定一個位圖作為背景,並使用 background 選項指定的顏色填充
只有設置了 background 選項該選項才會生效
默認的標准位圖有:'error', 'gray75', 'gray50', 'gray25', 'gray12', 'hourglass', 'info', 'questhead', 'question' 和 'warning'
borderwidth  指定文本框的寬度
fgstipple  指定一個位圖作為前景色
默認的標准位圖有:'error', 'gray75', 'gray50', 'gray25', 'gray12', 'hourglass', 'info', 'questhead', 'question' 和 'warning'
font  指定該 Tag 所描述的內容使用的字體
foreground  指定該 Tag 所描述的內容的前景色
注意:fg 並不是該選項的縮寫,在這里 fg 被解釋為 fgstipple 選項的縮寫
justify  控制文本的對齊方式
默認是 "left"(左對齊),還可以選擇 "right"(右對齊)和 "center"(居中)
lmargin1  設置 Tag 指向的文本塊第一行的縮進
lmargin2  設置 Tag 指向的文本塊除了第一行其他行的縮進
offset  設置 Tag 指向的文本相對於基線的偏移距離  可以控制文本相對於基線是升高(正數值)或者降低(負數值)
默認值是 0
overstrike  在 Tag 指定的文本范圍畫一條刪除線
underline  該選項設置為 True 的話,則 Tag 所描述的范圍內文本將被畫上下划線
wrap  設置當一行文本的長度超過 width 選項設置的寬度時,是否自動換行
該選項的值可以是:"none"(不自動換行),"char"(默認)(按字符自動換行)和 "word"(按單詞自動換行)

Text方法列表:

bbox(index)
-- 返回給定索引指定的字符的邊界框
-- 返回值是一個 4 元組:(x, y, width, height)
-- 如果該字符是不可見的,那么返回 None
-- 注意:只有當 Text 組件被更新的時候該方法才有效,可以使用 update_idletasks() 方法先更新 Text 組件

compare(index1, op, index2)
-- 返回對比 index1 和 index2 指定的兩個字符的結果
-- op 是操作符:'<', '<=', '==', '>=', '>' 或 '!='(不支持 Python 的 '<>' 操作符)
-- 返回布爾類型的值表示對比的結果

debug(boolean=None)
-- 開啟或關閉 Debug 狀態

delete(start, end=None)
-- 刪除給定范圍的文本或嵌入對象
-- 如果在給定范圍內有任何 Marks 標記的位置,則將 Marks 移動到 start 參數開始的位置

dlineinfo(index)
-- 返回給定索引指定的字符所在行的邊界框
-- 返回值是一個 5 元組:(x, y, width, height, offset),offset 表示從該行的頂端到基線的偏移
-- 如果該行不可見,則返回 None
-- 注意:只有當 Text 組件被更新的時候該方法才有效,可以使用 update_idletasks() 方法先更新 Text 組件

dump(index1, index2=None, command=None, **kw)
-- 返回 index1 和 index2 之間的內容
-- 返回的值是一個由 3 元組(關鍵詞,值,索引)組成的列表,關鍵詞參數的順序為:all, image, mark, tag, text, window
-- 默認關鍵詞是 'all',表示全部關鍵詞均為選中狀態
-- 如果需要篩選個別關鍵詞,可以用 dump(index1, index2, image=True, text=True) 這樣的形式調用
-- 如果指定了 command 函數,那么會為列表中的每一個三元組作為參數調用一次該函數(這種情況下,dump() 不返回值)

edit_modified(arg=None)
-- 該方法用於查詢和設置 modified 標志(該標標志用於追蹤 Text 組件的內容是否發生變化)
-- 如果不指定 arg 參數,那么返回 modified 標志是否被設置
-- 你可以傳遞顯式地使用 True 或 False 作為參數來設置或清除 modified 標志
-- 任何代碼或用戶的插入或刪除文本操作,“撤銷”或“恢復”操作,都會是的 modified 標志被設置

edit_redo(self)
-- “恢復”上一次的“撤銷”操作
-- 如果 undo 選項為 False,該方法無效
-- 詳見上方用法【“撤銷”和“恢復”操作】

edit_reset()
-- 清空存放操作記錄的棧

edit_separator()
-- 插入一個“分隔符”到存放操作記錄的棧中,用於表示已經完成一次完整的操作
-- 如果 undo 選項為 False,該方法無效
-- 詳見上方用法【“撤銷”和“恢復”操作】

edit_undo()
-- 撤銷最近一次操作
-- 如果 undo 選項為 False,該方法無效
-- 詳見上方用法【“撤銷”和“恢復”操作】

get(index1, index2=None)
-- 返回 index1 到 index2(不包含)之間的文本
-- 如果 index2 參數忽略,則返回一個字符
-- 如果包含 image 和 window 的嵌入對象,均被忽略
-- 如果包含有多行文本,那么自動插入換行符('\n')

image_cget(index, option)
-- 返回 index 參數指定的嵌入 image 對象的 option 選項的值
-- 如果給定的位置沒有嵌入 image 對象,則拋出 TclError 異常

image_configure(index, **options)
-- 修改 index 參數指定的嵌入 image 對象的一個或多個 option 選項的值
-- 如果給定的位置沒有嵌入 image 對象,則拋出 TclError 異常

image_create(index, cnf={}, **kw)
-- 在 index 參數指定的位置嵌入一個 image 對象
-- 該 image 對象必須是 Tkinter 的 PhotoImage 或 BitmapImage 實例
-- 可選選項 align:設定此圖像的垂直對齊,可以是 "top"、"center"、"bottom" 或 "baseline"
-- 可選選項 image:PhotoImage 或 BitmapImage 對象
-- 可選選項 name:你可以為該圖像實例命名,如果你忽略此選項,那么 Tkinter 會自動為其取一個獨一無二的名字。
-- 可選選項 padx:設置水平方向上的額外間距
-- 可選選項 pady:設置垂直方向上的額外間距

image_names()
-- 返回 Text 組件中嵌入的所有 image 對象的名字

index(index)
-- 將 index 參數指定的位置以 "line.column" 的索引形式返回
-- index 參數支持任何格式的索引

insert(index, text, *tags)
-- 在 index 參數指定的位置插入字符串
-- 可選參數 tags 用於指定文本的樣式
-- 詳見上方【Tags 用法】

mark_gravity(self, markName, direction=None)
-- 設置 Mark 的方向,可以是 "left" 或 "right"(默認是 "right",即如果在 Mark 處插入文本的話,Mark 將發生相應的移動以保持在插入文本的右側)
-- 如果設置為 "left",那么在 Mark 處插入文本並不會移動 Mark(因為 Mark 在插入文本的左側)
-- 如果忽略 direction 參數,則返回指定 Mark 的方向
-- 詳見上方【Marks 用法】

mark_names()
-- 返回 Text 組件中所有 Marks 的名字
-- 包括兩個特殊 Mark:"insert" 和 "current"
-- 注意:"end" 是特殊的索引,不是 Mark

mark_next(index)
-- 返回在 index 指定的位置后邊的一個 Mark 的名字
-- 如果不存在則返回空字符串

mark_previous(index)
-- 返回在 index 指定的位置前邊的一個 Mark 的名字
-- 如果不存在則返回空字符串

mark_set(markName, index)
-- 移動 Mark 到 index 參數指定的位置
-- 如果 markName 參數指定的 Mark 不存在,則創建一個新的 Mark

mark_unset(*markNames)
-- 刪除 markNames 指定的 Marks
-- 不能刪除預定義的 "insert" 和 "current"

replace(index1, index2, chars, *args)
-- 將 index1 到 index2 之間的內容替換為 chars 參數指定的字符串
-- 如果需要為替換的內容添加 Tag,可以在 args 參數指定 Tag
-- 詳見上方【Tags 用法】

scan_dragto(x, y)
-- 詳見下方 scan_mark(x, y)

scan_mark(x, y)
-- 使用這種方式來實現 Text 組件內容的滾動
-- 需要將鼠標按鈕事件以及鼠標當前位置綁定到 scan_mark(x, y) 方法,然后將 <motion> 事件及當前鼠標位置綁定到 scan_dragto(x, y) 方法,就可以實現 Text 組件的內容在當前位置和 scan_mark(x, y) 指定的位置 (x, y) 之間滾動

search(pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None)
-- 從 index 開始搜索 pattern,到 stopindex 結束(不指定表示搜索到末尾)
-- 如果成功找到,以 "line.column" 返回第一個匹配的字符;否則返回空字符串
-- forwards 參數設置為 True 表示向前(->)搜索
-- backwards 參數設置為 True 表示向后(<-)搜索
-- exact 參數設置為 True 表示搜索與 pattern 完全匹配的結果
-- regexp 參數設置為 True,則 pattern 被解釋為 Tcl 格式的正則表達式
-- nocase 參數設置為 True 是忽略大小寫,默認是區分大小寫的搜索
-- count 參數指定為一個 IntVar 的 Tkinter 變量,用於存放當找到匹配的字符個數(如果匹配結果中沒有嵌入的 image 或 window 對象的話,一般該值等於 pattern 的字符個數)

see(index)
-- 滾動內容,確保 index 指定的位置可見

tag_add(tagName, index1, index2=None)
-- 為 index1 到 index2 之間的內容添加一個 Tag(tagName 參數指定)
-- 如果 index2 參數忽略,則單獨為 index1 指定的內容添加 Tag
-- 詳見上方【Tags 用法】

tag_bind(tagName, sequence, func, add=None)
-- 為 Tag 綁定事件
-- 詳見上方【Tags 用法】

tag_cget(tagName, option)
-- 返回 tagName 指定的 option 選項的值

tag_config(tagName, cnf=None, **kw)
-- 跟 tag_configure(tagName, cnf=None, **kw) 一樣

tag_configure(tagName, cnf=None, **kw)
-- 設置 tagName 的選項
-- 詳見上方【Tags 用法】

tag_delete(*tagNames)
-- 刪除 tagNames 指定的 Tags

tag_lower(tagName, belowThis=None)
-- 降低 Tag 的優先級
-- 如果 belowThis 參數不為空,則表示 tagName 需要比 belowThis 指定的 Tag 優先級更低
-- 詳見上方【Tags 用法】

tag_names(index=None)
-- 如果不帶參數,表示返回 Text 組件中所有 Tags 的名字
-- index 參數表示返回該位置上所有的 Tags 的名字

tag_nextrange(tagName, index1, index2=None)
-- 在 index1 到 index2 的范圍內第一個 tagName 的位置
-- 如果沒有則返回空字符串

tag_prevrange(tagName, index1, index2=None)
-- tag_nextrange() 的反向查找,也就是查找范圍是 index2 到 index1

tag_raise(tagName, aboveThis=None)
-- 提高 Tag 的優先級
-- 如果 aboveThis 參數不為空,則表示 tagName 需要比 aboveThis 指定的 Tag 優先級更高
-- 詳見上方【Tags 用法】

tag_ranges(tagName)
-- 返回所有 tagName 指定的文本,並將它們的范圍以列表的形式返回

tag_remove(tagName, index1, index2=None)
-- 刪除 index1 到 index2 之間所有的 tagName
-- 如果忽略 index2 參數,那么只刪除 index1 指定的那個字符的 tagName(如果有的話)

tag_unbind(tagName, sequence, funcid=None)
-- 解除與 tagName 綁定的事件(sequence 指定)

window_cget(index, option)
-- 返回 index 參數指定的嵌入 window 對象的 option 選項的值
-- 如果給定的位置沒有嵌入 window 對象,則拋出 TclError 異常

window_config(index, cnf=None, **kw)
-- 跟 window_configure(index, cnf=None, **kw) 一樣

window_configure(index, cnf=None, **kw)
-- 修改 index 參數指定的嵌入 window 對象的一個或多個 option 選項的值
-- 如果給定的位置沒有嵌入 window 對象,則拋出 TclError 異常

window_create(index, **options)
-- 在 index 參數指定的位置嵌入一個 window 對象
-- 支持兩種方式在 Text 組件中嵌入 window 對象:請看下方 create 選項和 window 選項的描述
-- 可選選項 align:設定此圖像的垂直對齊,可以是 "top"、"center"、"bottom" 或 "baseline"
-- 可選選項 create:指定一個回調函數用於創建嵌入的 window 組件,該函數沒有參數,並且必須創建 Text 的子組件並返回
-- 可選選項 padx:設置水平方向上的額外間距
-- 可選選項 pady:設置垂直方向上的額外間距
-- 可選選項 stretch:該選項控制當行的高度大於嵌入組件的高度時,嵌入組件是否延伸。默認值是 False,表示組件保持原形;設置為 True 表示將該組件垂直部分延伸至行的高度
-- 可選選項 window:指定一個已經創建好的 window 組件,該組件必須是 Text 組件的子組件

window_names()
-- 返回 Text 組件中嵌入的所有 window 對象的名字

xview(*args)
-- 該方法用於在水平方向上滾動 Text 組件的內容,一般通過綁定 Scollbar 組件的 command 選項來實現(具體操作參考:Scrollbar)
-- 如果第一個參數是 "moveto",則第二個參數表示滾動到指定的位置:0.0 表示最左端,1.0 表示最右端
-- 如果第一個參數是 "scroll",則第二個參數表示滾動的數量,第三個參數表示滾動的單位(可以是 "units" 或 "pages"),例如:xview("scroll", 3, "units") 表示向右滾動三行

xview_moveto(fraction)
-- 跟 xview("moveto", fraction) 一樣

xview_scroll(number, what)
-- 跟 xview("scroll", number, what) 一樣

yview(*args)
-- 該方法用於在垂直方向上滾動 Text 組件的內容,一般通過綁定 Scollbar 組件的 command 選項來實現(具體操作參考:Scrollbar)
-- 如果第一個參數是 "moveto",則第二個參數表示滾動到指定的位置:0.0 表示最頂端,1.0 表示最底端
-- 如果第一個參數是 "scroll",則第二個參數表示滾動的數量,第三個參數表示滾動的單位(可以是 "units" 或 "pages"),例如:yview("scroll", 3, "pages") 表示向下滾動三頁

yview_moveto(fraction)
-- 跟 yview("moveto", fraction) 一樣

yview_scroll(number, what)
-- 跟 yview("scroll", number, what) 一樣

 

二、代碼示例

import tkinter as tk

window = tk.Tk()
# 設置主窗體大小
winWidth = 600
winHeight = 400
# 獲取屏幕分辨率
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight()
# 計算主窗口在屏幕上的坐標
x = int((screenWidth - winWidth)/ 2)
y = int((screenHeight - winHeight) / 2)

# 設置主窗口標題
window.title("Entry輸入框參數說明")
# 設置主窗口大小
window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 設置窗口寬高固定
window.resizable(0,0)
# 設置窗口圖標
window.iconbitmap("./image/icon.ico")

"""Construct a text widget with the parent MASTER.

    STANDARD OPTIONS

        background, borderwidth, cursor,
        exportselection, font, foreground,
        highlightbackground, highlightcolor,
        highlightthickness, insertbackground,
        insertborderwidth, insertofftime,
        insertontime, insertwidth, padx, pady,
        relief, selectbackground,
        selectborderwidth, selectforeground,
        setgrid, takefocus,
        xscrollcommand, yscrollcommand,

    WIDGET-SPECIFIC OPTIONS

        autoseparators, height, maxundo,
        spacing1, spacing2, spacing3,
        state, tabs, undo, width, wrap,

    """
def insert_end():
    text.insert(tk.END, "is end")
    
def insert():
    text.insert(tk.END, "is insert")
    
    
text = tk.Text(window, height=3)
text.pack()
tk.Button(window, text="end", width=30, pady=5, command=insert_end).pack(side=tk.TOP)
tk.Button(window, text="insert", width=30, pady=5, command=insert).pack(side=tk.TOP)

window.mainloop()

  

三、效果圖

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM