pythontkinterEntry控件的焦点移动操作
话不多说。
代码⽚:
# -*- coding: utf8 -*-
from tkinter import *
>>>>>>>##
###--------------tk----------------
class App:
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类不能直接传递参数,需要lambda
def focus_cg(event,e2):
e2.focus_set() #焦点移到e2
def handlerAdaptor(fun, **kwds):
#事件处理函数的适配器,相当于中介,那个event是从那⾥来的呢,我也纳闷,这也许就是python的伟⼤之处吧
return lambda event,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类不能直接传递参数,需要lambda
def focus_cg(event,e2):
e2.focus_set() #焦点移到e2
def handlerAdaptor(fun, **kwds):
#事件处理函数的适配器,相当于中介,那个event是从那⾥来的呢,我也纳闷,这也许就是python的伟⼤之处吧
return lambda event,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=0 foreground前景⾊彩
fg前景⾊彩
font字形
height⾼,单位是字符⾼
highlightbackground当功能按钮获取焦点时的背景颜⾊
highlightcolor当⼯⼈按钮取得焦点时的颜⾊
justify当有多⾏⽂字时,最后⼀⾏⽂字的对齐⽅式
relief可由此控制⽂字外框默认是relief=FLAT
selectbackground被选取字符串的背景⾊彩
selectborderwidth选取字符串时的边界宽度预设是1
selectfroeground被选取字符串的前景⾊彩
show显⽰输⼊字符例如,show='*'表⽰显⽰星号,常⽤于输⼊密码字段
state输⼊状态默认是NORMAL表⽰可以输⼊,DISABLE则表⽰⽆法输⼊
textvariable⽂字变量
width宽,单位是字符宽
xscrollcommand在X轴使⽤滚动条
Entry的基本应⽤
例⼦:建⽴标签和⽂本框,输⼊姓名和地址
import tkinter
root = tkinter.Tk()
label1 = tkinter.Label(root, text="姓名:")
label2 = tkinter.Label(root, text="住址:")
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root)
root.mainloop()
运⾏结果:
设置grid(row=0),在没有设置column=x的情况下,系统⾃动设置column=0
使⽤show 参数隐藏输⼊的字符
其实Entry控件具有可以使⽤show参数设置隐藏输⼊字符的特性,所以也常被应⽤在⽤于输⼊密码的时候
例⼦:密码的输⼊,⽤*隐藏
import tkinter
root = tkinter.Tk()
label1 = tkinter.Label(root, text="账号:")
label2 = tkinter.Label(root, text="密码:")
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
root.mainloop()
运⾏结果:
Entry 的 get ⽅法
Entry 有⼀个get()⽅法,可以利⽤这个⽅法来获取⽬前Entry 的字符串内容
import tkinter
def getValue():
print("账号为{}, 密码为{}".(), ()))
root = tkinter.Tk()
label1 = tkinter.Label(root, text="账号:")
label2 = tkinter.Label(root, text="密码:")
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
buttonLogin = tkinter.Button(root, text="登录", command=getValue)
buttonExit = tkinter.Button(root, text="退出", command=root.quit)
root.mainloop()
运⾏结果:
我们输⼊账号密码,点击登录
账号为123456, 密码为132456
控制台就出现了我们所需要的的信息
Entry 的 insert() ⽅法
在设计GUI程序时,常常需要在建⽴Entry的⽂本框内默认建⽴输⼊⽂字,在Widget控件中可以使⽤insert(index, s)⽅法插⼊字符串
其中s是所插⼊的字符串,字符串会插在index位置
例⼦:建⽴默认⽂字内容
import tkinter
def getValue():
print("账号为{}, 密码为{}".(), ()))
root = tkinter.Tk()
label1 = tkinter.Label(root, text="账号:")
label2 = tkinter.Label(root, text="密码:")
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
# 默认账号内容
entry1.insert(0, "123456")
# 默认密码内容
entry2.insert(0, "123456")
buttonLogin = tkinter.Button(root, text="登录", command=getValue)
buttonExit = tkinter.Button(root, text="退出", command=root.quit)
root.mainloop()
运⾏结果:
Entry 的 delete() ⽅法
在tkinter模块的应⽤中可以使⽤delete(first, last=None)⽅法删除Entry内的从第first字符到last-1字符间的字符串,如果要删除整个字符串可以使⽤delete(0, END)
如果删除倒数第⼀个,我们可以⽤len()⽅法判断长度,然后长度减⼀就⾏
例⼦:单击删除按钮清空⽂本框内容
import tkinter
def getValue():
print("账号为{}, 密码为{}".(), ()))
# 删除的⽅法
def deleteValue():
entry1.delete(0, tkinter.END)
entry2.delete(0, tkinter.END)
root = tkinter.Tk()
label1 = tkinter.Label(root, text="账号:")
textbox控件边框设置label2 = tkinter.Label(root, text="密码:")
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
# 默认账号内容
entry1.insert(0, "123456")
# 默认密码内容
entry2.insert(0, "123456")
buttonLogin = tkinter.Button(root, text="登录", command=getValue)
# 调⽤删除的⽅法
buttonExit = tkinter.Button(root, text="删除", command=deleteValue)
root.mainloop()
运⾏结果:
例⼦:删除最后⼀个
def deleteValue():
len_entry = ())
entry1.delete(len_entry - 1)
entry2.delete(0, tkinter.END)
运⾏结果:
如果只有⼀个参数的话,那这个参数将是first,如不是last,len_entry - 1相当于是从到底第⼀个开始删除,⼀直到末尾计算数学表达式使⽤ eval()
Python有⼀个⾮常好⽤的计算数学表达式的函数eval
该函数可以直接传回此数学表达式的计算结果,它的语法格式:
"""expression为字符串"""
result = eval(expression)
例⼦:
import tkinter
def getValue():
try:
value = ())
except:
pass
root = 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()
运⾏结果:
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论