tkinter的Entry设置默认值的效果
用Python的tkinter库做GUI程序,Entry控件被我们用来获取用户的输入,不过很多时候,我们希望GUI界面上的Entry控件能有默认值,用户可以修改默认值,也可以不修改。默认值提高了软件的易用性。
直接看代码:
import tkinter as tk root = tk.Tk() lb = tk.Label(root, text='网址:') lb.grid(row=0,column=0) addr = tk.StringVar(value='https://www.pynote.net') en = tk.Entry(root, textvariable=addr) en.grid(row=0,column=1) root.mainloop()
定义addr为tk.StringVar变量,在定义的时候,设置其value为某一个值,这个值就是默认值。在创建Entry控件的时候,使用textvariable参数指向addr。以上程序运行的效果如下:
Entry控件的默认值
还有一种设置默认值的写法,使用tk.StringVar对象的set函数,代码如下:
import tkinter as tk root = tk.Tk() lb = tk.Label(root, text='网址:') lb.grid(row=0,column=0) addr = tk.StringVar() addr.set('https://www.maixj.net') en = tk.Entry(root, textvariable=addr) en.grid(row=0,column=1) root.mainloop()
set函数设置值,get函数获取值。
以上示例都是使用tk.StringVar对象,其它类型的tk对象同理。给Entry控件设置默认值,就是这么简单!
现在给出第3中实现Entry控件默认值的方法,使用Entry控件自身的insert函数,代码如下:
import tkinter as tk root = tk.Tk() lb = tk.Label(root, text='网址:') lb.grid(row=0,column=0) addr = tk.StringVar() en = tk.Entry(root, textvariable=addr) en.insert(0, 'www.pynote.net') en.grid(row=0,column=1) root.mainloop()
以上代码,addr没有设置初始值,不过entry对象自己使用了insert函数,顾名思义,就是在Entry控件的可输入控件输入值。insert函数的第1个参数是0,表示从最开始的位置插入,如果是INSERT,表示从光标所在位置插入,如果是END,表示在末尾插入。