tkinter學習-- 四、控件Text


Tkinter 之Text文本框標簽(轉至:https://www.cnblogs.com/yang-2018/p/11787385.html)

 

一、參數說明

語法 作用

t=tk.Text()
t.insert(END,'插入的文本信息')

t.insert(1.0,'文本信息')在第一行第0列輸入文本信息

INSERT:光標的插入點
CURRENT:鼠標的當前位置所對應的字符位置
END:這個Textbuffer的最后一個字符

t.delete(mark1, mark2) INSERT:光標的插入點 CURRENT:鼠標的當前位置所對應的字符位置
END:這個Textbuffer的最后一個字符
SEL_FIRST:選中文本域的第一個字符,如果沒有選中區域則會引發異常
SEL_LAST:選中文本域的最后一個字符,如果沒有選中區域則會引發異常
t.get(起始位置,結束位置)如t.get(1.2,1.6) 獲取起始位置結束位置之間的文本內容

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) 一樣

常用顯示:

windows= tk.Tk()
#設置文本框的高度寬度 height,width
Label(windows,text='heigt,width的用法').grid(row=0,column=0)
Text(windows,height=2,width=10).grid(row=0,column=1)

#設置文本框邊框大小bd=''
Label(windows,text='bd設置邊框大小').grid(row=1,column=0)
Text(windows,bd=10,height=2,width=10).grid(row=1,column=1)

#設置背景色前景色
Label(windows,text='設置背景色前景色').grid(row=2,column=0)
Text(windows,bg='red',fg='yellow',height=2,width=10).grid(row=2,column=1)


#設置字體font=('字體', 字號, 'bold(斜體)/italic/underline/overstrike')
Label(windows,text='font設置字體,字號,斜體').grid(row=3,column=0)
Text(windows,font=('楷體',10,'bold'),height=2,width=10).grid(row=3,column=1)

# 文本框狀態,禁用狀態無法輸入,正常狀態可以輸入
Label(windows, text='文本框狀態:').grid(row=4,column=0)
text_config=Text(windows, height=1, width=20)
text_config.insert('0.0', '禁用狀態')
text_config.config(state=DISABLED)
text_config.grid(row=4,column=1)

text_config2=Text(windows, height=1, width=20)
text_config2.insert('0.0', '正常狀態')
text_config2.config(state=NORMAL)
text_config2.grid(row=4,column=2)

# 文本框點擊是邊框顏色,及顏色厚度。highlightcolor='顏色',highlightthickness=厚度
Label(windows, text='點擊顏色/厚度:').grid(row=5,column=0)
Text(windows, height=1, width=10, highlightcolor='red', highlightthickness=1).grid(row=5,column=1)
#

#文本框樣式
# 文本框樣式
Label(windows, text='文本框樣式:').grid(row=6)
flat_text = Text(windows, height=1, width=10, relief=FLAT)
flat_text.insert('0.0', '邊框平坦')
flat_text.grid(row=7,column=1)


sunken_text = Text(windows, height=1, width=10, relief=SUNKEN)
sunken_text.insert('0.0', '邊框凹陷')
sunken_text.grid(row=8,column=1)


taised_text = Text(windows, height=1, width=10, relief=RAISED)
taised_text.insert('0.0', '邊框凸起')
taised_text.grid(row=9,column=1)


groove_text = Text(windows, height=1, width=10, relief=GROOVE)
groove_text.insert('0.0', '邊框壓線')
groove_text.grid(row=10,column=1)


tidge_text = Text(windows, height=1, width=10, relief=RIDGE)
tidge_text.insert('0.0', '邊框脊線')
tidge_text.grid(row=11,column=1)

windows.mainloop()

 

 #獲取文本框輸入的值,展示在text頁面中

Text().insert(INSTAR,StringVar().get())

Text().delete(開始位置=float,結束=float(最后=END))

 

class Window_show(Tk):
    def __init__(self,windows):
        self.window=windows
        self.show_windows()
        self.change_value()

    def show_windows(self):
        self.value=StringVar()
        self.entry=Entry(self.window,width=20,textvariable=self.value)
        self.entry.grid(row=0,column=0)
        self.text=Text(self.window)
        self.text.grid(row=1,columnspan=2)
        self.button=Button(self.window,text='內容',width=20,command=self.change_value) #注意這里是self.change_value
        self.button.grid(row=0,column=1)
    def change_value(self):
        #使用self.value 的好處是可以避免首行是控制的情況;使用self.entry.get()容易出現首行空行
        #self.text.insert(INSERT,self.entry.get())
        print(self.value) #PY_VAR0
        self.text.insert(1.0,self.value.get()) #需要通過StringVar的get()方法才能調用entry傳入的值
        self.text.insert(END,self.value.get())

windows=tk.Tk()
app= Window_show(windows)

windows.mainloop()

  

#內容裝換換,讀取text1數據,按鈕后顯示在text2上
#如將橫排文檔裝換為豎版顯示,按entry輸入的換行符進行裝換
class Translate(Tk):
    def __init__(self,windows):

        self.windows=windows
        self.show_view()
        self.change_content()


    def show_view(self): #這里的代碼一定看清楚否則極易出現超過最大遞歸深度報錯
        self.label=Label(self.windows,text='文字裝換',font=('黑體',15),fg='red',bg='orange')
        self.label.grid(row=0,stick='w',columnspan=3,rowspan=2)
        self.label2=Label(self.windows,text='轉換符(注意中英文)',anchor='e')
        self.label2.grid(row=2,column=0)
        self.entry=Entry(self.windows,width=10)
        self.entry.grid(row=2,column=1,padx=20)
        self.button=Button(self.windows,text='裝換',width=10,command=self.change_content)
        self.button.grid(row=3,column=1)
        self.text1=Text()
        self.text1.grid(row=3,column=0)
        self.text2=Text()
        self.text2.grid(row=3,column=2)

    def change_content(self):
        content=self.text1.get(1.0,END)
        sep = self.entry.get() #','字符划分
        self.text2.delete(0.0,END)
        try:
            for i in  content.split(sep):
                self.text2.insert(END, i+'\n')
        except:
            print('error')


windows=tk.Tk()
windows.title('文字裝置划分')

app=Translate(windows)
windows.mainloop()

 

 補充整理

一些常用方法

Text().index(index) –獲取指定的索引。
Text().insert(index,str) –在指定的索引處插入字符串。
Text().see(index) –檢查在給定索引處字符串是否可見。
Text().get(startindex,endindex) –獲取給定范圍內的字符。
Text().delete(startindex,endindex) –刪除指定范圍內的字符。

text中的tag事件綁定若干按鍵 

鼠標事件類型

<Key>               隨便一個按鍵,鍵值會以char的格式放入event對象。
<Button-1>          按下了鼠標左鍵        <ButtonPress-1>
<Button-2>          按下了鼠標中鍵        <ButtonPress-2>
<Button-3>          按下了鼠標右鍵        <ButtonPress-3>
<Enter>             鼠標進入組件區域
<Leave>             鼠標離開組件區域
<ButtonRelease-1>   釋放了鼠標左鍵
<ButtonRelease-2>   釋放了鼠標中鍵
<ButtonRelease-3>   釋放了鼠標右鍵
<B1-Motion>          按住鼠標左鍵移動
<B2-Motion>          按住鼠標中鍵移動
<B3-Motion>          按住鼠標右鍵移動 
<Double-Button-1>   雙擊鼠標左鍵
<Double-Button-2>   雙擊鼠標中鍵
<Double-Button-3>   雙擊鼠標右鍵
<Button-4>        滾動鼠標滾輪 向上滾動
<Button-5>        滾動鼠標滾輪 向下滾動

注意: 如果同時綁定單擊事件 (<Button-1>) 和雙擊事件 (<Double-Button-1>), 則兩個回調都會被調用.

鍵盤事件類型

<KeyPress>                       表示任何鍵盤按下
<KeyRelease>                   表示松開鍵盤任意按鍵
<KeyPress-A>                   表示按下鍵盤A鍵    A可以設置為其他的按鍵
<KeyRelease-A>               表示松開鍵盤A鍵    A可以設置為其他的按鍵
<Alt-KeyPress-A>             表示同時按下Alt和A鍵    A可以設置為其他的按鍵
<Control-KeyPress-A>      表示同時按下Ctrl和A鍵    A可以設置為其他的按鍵
<Shift-KeyPress-A>          表示同時按下Shift和A鍵    A可以設置為其他的按鍵
<Double-KeyPress-A>      表示雙擊鍵盤A鍵    A可以設置為其他的按鍵
<Lock-KeyPress-A>          表示開啟大寫之后鍵盤A鍵    A可以設置為其他的按鍵
<Alt-Control-KeyPress-A> 表示同時按下alt+Ctrl和A鍵    A可以設置為其他的按鍵
<Configure>                       這個關鍵了,如果widget的大小改變了,或者是位置,新的大小(width和height)會打包到event發往handler。

from tkinter import  *
import  webbrowser
root=Tk()

text=Text(root)
text.pack()
"""
一些常用方法:

index(index) –獲取指定的索引。
insert(index,str) –在指定的索引處插入字符串。
see(index) –檢查在給定索引處字符串是否可見。
get(startindex,endindex) –獲取給定范圍內的字符。
delete(startindex,endindex) –刪除指定范圍內的字符。


"""

#一、insert在開始,結尾處插入
text.insert(INSERT,'在光標位置插入')
text.insert(END,'在末尾處插入 ')
text.insert(1.0,'1.0插隊輸入 ')
text.insert(1.0,'66 ')
cont="""
這是 一大行的文字
這里面有換行符
換行符也會正常打印出來

"""
text.insert(END,cont)


#二、創建一個窗口組件,插入到text中,如:將button插入到text中 Text().window_create
b1=Button(text='把button控件插入到text中')
text.window_create(INSERT,window=b1)
Button(text='exist',command=root.destroy).pack()



#三、創建一個圖片組件插入到text中,如:photo插入到text中
photo=PhotoImage(file='giphy.gif')
text.image_create(END,image=photo)





#四、text標簽 tag 打開文字中的url鏈接
text.tag_add('tag1','1.5','1.8')
#在text中的第一行第二個位置到第五個位置,加入tag1
text.tag_config('tag1',background='yellow',foreground='red')
#tag_config 設置tag1的格式

def click(event):
    webbrowser.open('http://www.baidu.com')
text.tag_bind('tag1','<Button-1>',click)
#五、eventx,eventy事件函數獲取點擊位置
text2=Text(root)
text2.pack()
def callback(event):
print('當前位置為:',event.x,event.y)
text2.bind('<Button-1>',callback)

root.mainloop()
root.mainloop()

 

 

 

text中的索引使用

索引類型 意思
line.column 行/列
line.end 某一行的末尾
INSERT(或'insert') 對應插入光標的位置
CURRENT(或 "current" )  --用的少  對應於鼠標坐標最接近的位置不過,如果你緊按鼠標任何一個按鈕,它會直到你松開它才響應(即你松開時的位置)
END(或'end')  對應 Text 組件的文本緩沖區最后一個字符的下一個位置
user-defined marks user-defined marks 是對 Text 組件中位置的命名。INSERT 和 CURRENT 是兩個預先命名好的 marks,除此之外你可以自定義 marks 
user-defined tags("tag.first", "tag.last")  你可以使用 "tag.first"(使用 tag 的文本的第一個字符之前)和 "tag.last"(使用 tag 的文本的最后一個字符之后)語法表示標簽的范圍。
selection(SEL_FIRST, SEL_LAST)  selection 是一個名為 SEL(或 "sel" )的特殊 tag,表示當前被選中的范圍,你可以使用 SEL_FIRST 到 SEL_LAST 來表示這個范圍,如果沒有選中的內容,那么 Tkinter 會拋出 TclError 異常
window coordinate("@x,y")

 你還可以使用窗口坐標作為索引。例如在一個事件綁定中,你可以使用以下代碼找到最接近鼠標位置的字符:如:

def change(event):

  print('點擊位置:'event.x,event.y)

     

embedded object name(window, images)  

embedded object name 用於指向在 Text 組件中嵌入的 window 和 image 對象。要引用一個 window,只要簡單的將一個 Tkinter 組件實例作為索引即可。引用一個嵌入的 image,只需使用相應的 PhotoImage 和 BitmapImage 對象

 

expressions  expressions 用於修改任何格式的索引,用字符號的形式實現修改索引的表達式。

 

#text中的索引位置 text中如1.1表示第一行第一列
#表示1.1這個字符 :
#格式化字符串 "%d%d"%(line,column)
#line.column格式索引
text=Text(width=10)
text.pack()
text.insert(INSERT,'todayismonday')
print(text.get('1.0', '1.2')) # t0
#h獲取文本從第一行第0個到第2個文字
#line.end格式
print(text.get('1.1','1.end'))  #odayismonday

  

  Text 支持多行文本,就是從一維空間變成了二維空間。因此可以用行和列定位一個位置 (https://blog.csdn.net/sinat_41104353/article/details/79307111?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160368274619724822537770%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=160368274619724822537770&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-7-79307111.first_rank_ecpm_v3_pc_rank_v2&utm_term=PYTHON+tkinter+texttag&spm=1018.2118.3001.4187)

 

 

  

 


免責聲明!

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



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