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。