程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python tkinter - 第六章 6.2輸入控件的方法

編輯:Python

6.2 輸入控件的方法

6.2.1方法

方法描述delete(first, last=None)刪除選中的文本。起始是first,last如果沒有定義,則只刪除first位置上的字符。get()獲得輸入控件當前的內容。返回值是一個字符串icursor(index)移動插入光標到指定的位置。index(index)返回index值。是一個整形數。insert(index, string)在index位置處插入字符。insert(INSERT,string)在插入光標的位置插入字符insert(END,string)追加文本selection_adjust(index)
select_adjust(index)調整選擇到index位置。如果index已經被選擇,無動作。selection_clear()
select_clear()清除當前選擇selection_from(index)
select_from(index)設定選擇的起始位置從index開始,需要與select_to()配合使用。selection_present()
select_present()檢查是否有字符被選中。selection_range(start, end)
select_range(start, end)選擇從start到end的文本。selection_to(index)
select_to(index)選擇從光標到index位置的文本。如果使用了select_from(),在使用select_from()定義的index。xview(index)顯示index處的文本。用來處理字符串的長度大於Entry的顯示寬度。此方法保證index處的字符會被顯示。xview_moveto(fraction)顯示指定的內容。此方法將整個輸入內容的長度視為1,輸入的參數為百分比。比如0.5就表示把輸入內容的中間部分移動並顯示出來。xview_scroll(number, what)水平滾動number個位置。what指定單位,可以是units,也可以是pages

6.2.2 delete(first,last=None)
刪除輸入控件中的內容。這些內容是用程序刪除的,與我們用刪除鍵的功效一樣。
參數:
first:刪除開始的位置
last: 刪除結束的位置。默認值是None。就是只刪除一個字符。也可以是END,表示刪到行尾

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=20)
b1.pack()
def del_entry():
b1.delete(2,5)
b2=tk.Button(root,text='Delete Entry',command=del_entry)
b2.pack()
root.mainloop()

結果:


說明:
先輸入1234567890是個數字,然後點擊按鈕。按鈕的回調函數是delete(2,5)。可以發現3,4,5被刪除了。起始位置是2(因為從0開始,所以3被刪除了)。結束的位置是5,但是只刪除到last-1的位置,也就是位置4(在輸入控件中是5)。

如果last的值小於或者等於first,是不會刪除任何字符的。
6.2.3 get()
獲得輸入控件中的當前內容。獲得當前輸入控件的內容有兩種方法,一種是用get,還有一種是使用textvariable來設置關聯變量獲得。因為輸入控件中沒有set函數,一般建議使用textvariable來設置與獲取輸入控件的內容。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
txt = tk.StringVar()
b1=tk.Entry(root,width=20)
b1.pack()
b3=tk.Entry(root,width=20,textvariable=txt)
b3.pack()
def get_entry():
x = b1.get()
txt.set(x)
b2=tk.Button(root,text='Get Entry',command=get_entry)
b2.pack()
root.mainloop()

結果:


說明:
先輸入12345到輸入控件1,點擊按鈕後,會拷貝輸入控件1的內容到輸入控件2。而獲取輸入控件1的內容用的就是get()。
6.2.4 icursor
此方法的作用是移動輸入光標到指定的位置。該方法有一個參數index,就是要移動到的位置。這個位置是從0開始的絕對位置,而不是相對於光標的當前位置。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
txt = tk.StringVar()
b1=tk.Entry(root,width=20)
b1.pack()
def move_cursor():
b1.icursor(5)
b2=tk.Button(root,text='Move Cursor',
command=move_cursor)
b2.pack()
root.mainloop()

結果:


6.2.5 index
返回輸入參數的數字類型位置。輸入的參數如下:
tk.END : 輸入框最後一個字符後的位置
tk.INSERT :插入光標所在的位置
tk.ANCHOR : 選擇的錨定位置
tk.SEL_FIRST :選擇區域開始的位置
tk.SEL_LAST :選擇區域結束後的位置
‘@x’ :輸入x坐標,返回位於該坐標的字符的位置,如果沒有任何字符位於此坐標之上,返回最靠近該坐標的字符的位置。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root)
b1.pack()
b3=tk.Label(root)
def index():
b3['text']=str(b1.index(tk.INSERT))
b2=tk.Button(root,text='Index',command=index)
b2.pack()
b3.pack()
root.mainloop()

結果:

6.2.6 insert
該方法是在指定的光標處插入字符串。有2個參數:
1)index: 在指定位置處插入字符串。INSERT表示當前光標處,而END表示在追加。
2)String:要添加的字符串

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=20)
b1.pack()
def insert_entry():
b1.insert(tk.END,'world!!!')
b2=tk.Button(root,text='Insert',command=insert_entry)
b2.pack()
root.mainloop()



說明:
插入的位置可以是行尾、光標處,也可以是任意的指定位置。只要是整數就看可以。甚至是負數都沒有關系。
6.2.7 selection_adjust 和select_adjust
這兩個方法的作用是一樣的。都是把選中的區域擴大到給定的位置。如果當前的選擇區域已經包含了給定的位置,則不會有任何改變。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=20)
b1.pack()
def select_entry():
b1.select_adjust(8)
b2=tk.Button(root,text='Select Adjust',
command=select_entry)
b2.pack()
root.mainloop()

結果:


說明:
如果當前沒有任何選中的字符,該方法會從0作為起始點,選擇到指定的位置。如果有選中的字符,就根據選中區域的開始與結束位置,與傳入的位置進行比較,然後決定如何調整選中區域。因為傳入的位置參數可能比選中的開始位置還要小,這個時候就是向前擴大選中區域。
6.2.8 selection_clear 和 select_clear
這兩個方法的作用就是清除當前選擇。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=20)
b1.pack()
def select_entry():
b1.select_clear()
b2=tk.Button(root,text='Select Clear',
command=select_entry)
b2.pack()
root.mainloop()

結果:


6.2.9 selection_from 和 select_from
設定選擇的開始index,結束的index由select_to函數來確定,也就是說需要這兩個函數配合,才能完成選中文本。不過select_to()是可以單獨使用的,這個時候起始的光標可以是目前的光標位置,也可以是從0開始。具體的用法見6.2.12 select_to的說明。
6.2.10 selection_present 和 select_present
這兩個方法是檢測是否有字符被選中的。如果有字符被選中,返回值是True,否則是False。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=20)
b1.pack()
b3=tk.Label(root)
b3.pack()
def present_entry():
b3['text']=b1.selection_present()
b2=tk.Button(root,text='Select present',
command=present_entry)
b2.pack()
root.mainloop()

結果:


6.2.11 selection_range 和select_range
設定選擇的范圍。有兩個參數:start和end。start是選擇開始的位置,而end是選擇結束的位置。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=20)
b1.pack()
def range_entry():
b1.selection_range(2,6)
b2=tk.Button(root,text='Select Range',
command=range_entry)
b2.pack()
root.mainloop()

結果:


6.2.12 selection_to 和 select_to
選中從光標到給定位置處。這個給定的位置可以在光標的前面,也可以在光標的後面。其實這個函數與selection_from是配合使用的。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=20)
b1.pack()
def to_entry():
b1.selection_from(2)
b1.selection_to(6)
b2=tk.Button(root,text='Select To',
command=to_entry)
b2.pack()
root.mainloop()

結果:

6.2.13 xview
顯示位於給定位置的字符。這個功能是在輸入的字符超過給定的輸入控件寬度,當需要快速顯示或者定位給定位置的字符的時候,需要這個功能。尤其是和水平滾動條綁定的時候。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=4)
b1.pack()
def xview_entry():
b1.xview(6)
b2=tk.Button(root,text='Xview',command=xview_entry)
b2.pack()
root.mainloop()

結果:


6.2.14 xview_moveto
這個方法和xview類似,不過參數是一個浮點數。將整個輸入的內容長度視為1,按照百分比設定要滾動到的位置,比如0.5就是把整個內容的中間部分在輸入控件中顯示。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=4)
b1.pack()
def moveto_entry():
b1.xview_moveto(0.5)
b2=tk.Button(root,text='Xview Moveto',command=moveto_entry)
b2.pack()
root.mainloop()

結果:


6.2.15 xview_scroll
此方法有兩個參數,一個是number,表示移動多少個位置。另一個是what,表示移動的單位。有兩個單位:unit和page。unit是按照字符個數來計量的,而page是按照輸入控件的寬度來計量的。也就是說,如果輸入控件的寬度是10,那麼每次滾動的數量就是10的倍數。

import tkinter as tk
root=tk.Tk()
root.geometry('300x240')
b1=tk.Entry(root,width=4)
b1.pack()
def unit_entry():
b1.xview_scroll(6,'unit')
def page_entry():
b1.xview_scroll(2,'page')
b2=tk.Button(root,text='Xview_Scroll Unit',command=unit_entry)
b2.pack()
b3=tk.Button(root,text='Xview_Scroll Page',command=page_entry)
b3.pack()
root.mainloop()

說明:按下’Xview_Scroll Unit’,輸入框中的內容向前滾動6個字符;如果是按下’Xview_Scroll Page’,則向前滾動4個字符,因為輸入框的寬度是4。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved