小编给大家分享一下python中tkinter Entry控件的焦点如何移动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

代码片:

#-*-coding:utf8-*-fromtkinterimport*########################################--------------tk----------------classApp:def__init__(self,master):frame=Frame(master)frame.pack(expand=1)self.e1=Entry(frame)self.e1.pack()self.e2=Entry(frame)self.e2.pack()self.e1.bind("<Return>",handlerAdaptor(focus_cg,e2=self.e2))#tk类不能直接传递参数,需要lambdadeffocus_cg(event,e2):e2.focus_set()#焦点移到e2defhandlerAdaptor(fun,**kwds):#事件处理函数的适配器,相当于中介,那个event是从那里来的呢,我也纳闷,这也许就是python的伟大之处吧returnlambdaevent,fun=fun,kwds=kwds:fun(event,**kwds)if__name__=='__main__':root=Tk()app=App(root)root.mainloop()

Tkinter 事件绑定的,参数不能直接传递。全局变量可以使用。

不使用全局变量的方法:

self.btn=Button(frame,text=u'OK',command=lambda:handler(v=123))事件绑定型:

self.e1.bind("<Return>",handlerAdaptor(focus_cg,e2=self.e2))#tk类不能直接传递参数,需要lambdadeffocus_cg(event,e2):e2.focus_set()#焦点移到e2defhandlerAdaptor(fun,**kwds):#事件处理函数的适配器,相当于中介,那个event是从那里来的呢,我也纳闷,这也许就是python的伟大之处吧returnlambdaevent,fun=fun,kwds=kwds:fun(event,**kwds)

补充:Python之tkinter 文本框Entry的基本应用

Entry简介

所谓的文本框Entry,通常是指单行的文本框,在GUI程序设计中,这是用于输入的最基本控件,我们可以使用它输入单行字符串,如果所输入的字符串长度大于文本框的宽度,所输入的文字会自动隐藏,造成部分内容无法显示,碰到这种状况时可以使用箭头键移动鼠标光标到看不到的区域。

文本框限定的是单行文字,如果想要处理多行文字,需要使用控件中的text

它的语法格式:

Entry(父对象, options, ...)

第一个参数:父对象,表示这个文本框将建立在哪一个窗口内

第二个参数:options,参数如下

参数含义borderwidth边界宽度 默认是两个像素bd边界宽度 默认是两个像素background背景色彩bg背景色彩command当用户更改内容时,会自动执行此函数cursor当鼠标光标移至按钮上时的形状exportselection如果执行选取时,所选取的字符串会自动输出至剪贴板 如果想要避免,可以设置exportselection=0foreground前景色彩fg前景色彩font字形height高,单位是字符高highlightbackground当功能按钮获取焦点时的背景颜色highlightcolor当工人按钮取得焦点时的颜色justify当有多行文字时,最后一行文字的对齐方式relief可由此控制文字外框 默认是relief=FLATselectbackground被选取字符串的背景色彩selectborderwidth选取字符串时的边界宽度 预设是1selectfroeground被选取字符串的前景色彩show显示输入字符 例如,show='*'表示显示星号,常用于输入密码字段state输入状态 默认是NORMAL表示可以输入,DISABLE则表示无法输入textvariable文字变量width宽,单位是字符宽xscrollcommand在X轴使用滚动条Entry的基本应用

例子:建立标签和文本框,输入姓名和地址

importtkinterroot=tkinter.Tk()label1=tkinter.Label(root,text="姓名:")label2=tkinter.Label(root,text="住址:")label1.grid(row=0)label2.grid(row=1)entry1=tkinter.Entry(root)entry2=tkinter.Entry(root)entry1.grid(row=0,column=1)entry2.grid(row=1,column=1)root.mainloop()

设置grid(row=0),在没有设置column=x的情况下,系统自动设置column=0

使用show 参数隐藏输入的字符

其实Entry控件具有可以使用show参数设置隐藏输入字符的特性,所以也常被应用在用于输入密码的时候

例子:密码的输入,用*隐藏

importtkinterroot=tkinter.Tk()label1=tkinter.Label(root,text="账号:")label2=tkinter.Label(root,text="密码:")label1.grid(row=0)label2.grid(row=1)entry1=tkinter.Entry(root)entry2=tkinter.Entry(root,show="*")entry1.grid(row=0,column=1)entry2.grid(row=1,column=1)root.mainloop()Entry 的 get 方法

Entry 有一个get()方法,可以利用这个方法来获取目前Entry 的字符串内容

importtkinterdefgetValue():print("账号为{},密码为{}".format(entry1.get(),entry2.get()))root=tkinter.Tk()label1=tkinter.Label(root,text="账号:")label2=tkinter.Label(root,text="密码:")label1.grid(row=0)label2.grid(row=1)entry1=tkinter.Entry(root)entry2=tkinter.Entry(root,show="*")entry1.grid(row=0,column=1)entry2.grid(row=1,column=1)buttonLogin=tkinter.Button(root,text="登录",command=getValue)buttonExit=tkinter.Button(root,text="退出",command=root.quit)buttonLogin.grid(row=2,column=0,sticky=tkinter.W,padx=20)buttonExit.grid(row=2,column=1)root.mainloop()

我们输入账号密码,点击登录

账号为123456,密码为132456

控制台就出现了我们所需要的的信息

Entry 的 insert() 方法

在设计GUI程序时,常常需要在建立Entry的文本框内默认建立输入文字,在Widget控件中可以使用insert(index, s)方法插入字符串

其中s是所插入的字符串,字符串会插在index位置

例子:建立默认文字内容

importtkinterdefgetValue():print("账号为{},密码为{}".format(entry1.get(),entry2.get()))root=tkinter.Tk()label1=tkinter.Label(root,text="账号:")label2=tkinter.Label(root,text="密码:")label1.grid(row=0)label2.grid(row=1)entry1=tkinter.Entry(root)entry2=tkinter.Entry(root,show="*")#默认账号内容entry1.insert(0,"123456")#默认密码内容entry2.insert(0,"123456")entry1.grid(row=0,column=1)entry2.grid(row=1,column=1)buttonLogin=tkinter.Button(root,text="登录",command=getValue)buttonExit=tkinter.Button(root,text="退出",command=root.quit)buttonLogin.grid(row=2,column=0,sticky=tkinter.W,padx=20)buttonExit.grid(row=2,column=1)root.mainloop()Entry 的 delete() 方法

在tkinter模块的应用中可以使用delete(first, last=None)方法删除Entry内的从第first字符到last-1字符间的字符串,如果要删除整个字符串可以使用delete(0, END)

如果删除倒数第一个,我们可以用len()方法判断长度,然后长度减一就行

例子:单击删除按钮清空文本框内容

importtkinterdefgetValue():print("账号为{},密码为{}".format(entry1.get(),entry2.get()))#删除的方法defdeleteValue():entry1.delete(0,tkinter.END)entry2.delete(0,tkinter.END)root=tkinter.Tk()label1=tkinter.Label(root,text="账号:")label2=tkinter.Label(root,text="密码:")label1.grid(row=0)label2.grid(row=1)entry1=tkinter.Entry(root)entry2=tkinter.Entry(root,show="*")#默认账号内容entry1.insert(0,"123456")#默认密码内容entry2.insert(0,"123456")entry1.grid(row=0,column=1)entry2.grid(row=1,column=1)buttonLogin=tkinter.Button(root,text="登录",command=getValue)#调用删除的方法buttonExit=tkinter.Button(root,text="删除",command=deleteValue)buttonLogin.grid(row=2,column=0,sticky=tkinter.W,padx=20)buttonExit.grid(row=2,column=1)root.mainloop()

例子:删除最后一个

defdeleteValue():len_entry=len(entry1.get())entry1.delete(len_entry-1)entry2.delete(0,tkinter.END)

如果只有一个参数的话,那这个参数将是first,如不是last,len_entry - 1相当于是从到底第一个开始删除,一直到末尾

计算数学表达式使用 eval()

Python有一个非常好用的计算数学表达式的函数eval

该函数可以直接传回此数学表达式的计算结果,它的语法格式:

"""expression为字符串"""result=eval(expression)

例子:

importtkinterdefgetValue():try:value=eval(entry.get())label2.configure(text="计算结果为:"+str(value))except:passroot=tkinter.Tk()label=tkinter.Label(root,text="请输入数学表达式:")label.pack(anchor=tkinter.W)entry=tkinter.Entry(root)entry.pack(pady=5)label2=tkinter.Label(root)label2.pack()button=tkinter.Button(root,text="计算",command=getValue)button.pack(pady=5)root.mainloop()

以上是“python中tkinter Entry控件的焦点如何移动”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!