python tkinter Entry控件的焦点移动操作

 更新时间:2021年05月22日 11:51:29   作者:bill_zhou2008  
这篇文章主要介绍了python tkinter Entry控件的焦点移动操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Python客栈送红包、纸质书

话不多说。

代码片:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- 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 事件绑定的,参数不能直接传递。全局变量可以使用。

不使用全局变量的方法:

1
self.btn = Button(frame,text=u'OK', command=lambda : handler(v=123))

事件绑定型:

1
2
3
4
5
6
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的基本应用

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

1
2
3
4
5
6
7
8
9
10
11
import tkinter
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)
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
root.mainloop()

运行结果:

在这里插入图片描述

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
import tkinter
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)
root.mainloop()

运行结果:

在这里插入图片描述

Entry 的 get 方法

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import tkinter
def getValue():
    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()

运行结果:

在这里插入图片描述

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

1
账号为123456, 密码为132456

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

Entry 的 insert() 方法

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

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

例子:建立默认文字内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import tkinter
def getValue():
    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()方法判断长度,然后长度减一就行

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import tkinter
def getValue():
    print("账号为{}, 密码为{}".format(entry1.get(), entry2.get()))
# 删除的方法
def deleteValue():
    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()

运行结果:

在这里插入图片描述

例子:删除最后一个

1
2
3
4
def deleteValue():
    len_entry = len(entry1.get())
    entry1.delete(len_entry - 1)
    entry2.delete(0, tkinter.END)

运行结果:

在这里插入图片描述

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

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

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

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

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

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import tkinter
def getValue():
    try:
        value = eval(entry.get())
        label2.configure(text="计算结果为:" + str(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()

运行结果:

在这里插入图片描述

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

蓄力AI

微信公众号搜索 “ 脚本之家 ” ,选择关注

程序猿的那些事、送书等活动等着你

原文链接:https://blog.csdn.net/bill_zhou2008/article/details/90707396

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!

相关文章

  • 浅谈在JupyterNotebook下导入自己的模块的问题

    浅谈在JupyterNotebook下导入自己的模块的问题

    这篇文章主要介绍了浅谈在JupyterNotebook下导入自己的模块的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 分享十个Python超级好用提高工作效率的自动化脚本

    分享十个Python超级好用提高工作效率的自动化脚本

    在这个自动化时代,我们有很多重复无聊的工作要做。 想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。本文分享了10个Python自动化脚本,希望对大家有所帮助
    2022-11-11
  • 详解基于python的全局与局部序列比对的实现(DNA)

    详解基于python的全局与局部序列比对的实现(DNA)

    这篇文章主要介绍了详解基于python的全局与局部序列比对的实现(DNA).文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Python安装Gradio和常见安装问题解决办法

    Python安装Gradio和常见安装问题解决办法

    Gradio是一款便捷的Python库,专门用于创建机器学习模型的Web应用,安装通常简单,但偶尔会遇到依赖问题或环境配置错误,这篇文章主要介绍了Python安装Gradio和常见安装问题解决办法,需要的朋友可以参考下
    2024-10-10
  • 提高Python生产力的五个Jupyter notebook插件

    提高Python生产力的五个Jupyter notebook插件

    Jupyter Notebook 因其可用性和实用性而成为数据分析和机器学习模型领域最流行的 IDE,它也是很多数据初学者的首选 IDE。它最具特色的是,拥有丰富的插件、扩展数据处理能力和提升工作效率
    2021-11-11
  • 快速查找Python安装路径方法

    快速查找Python安装路径方法

    这篇文章主要介绍了快速查找Python安装路径方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • pygame编写音乐播放器的实现代码示例

    pygame编写音乐播放器的实现代码示例

    这篇文章主要介绍了pygame编写音乐播放器的实现代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 如何用python做逐步回归

    如何用python做逐步回归

    这篇文章主要介绍了如何用python 做逐步回归,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-04-04
  • Anaconda下Python中GDAL模块的下载与安装过程

    Anaconda下Python中GDAL模块的下载与安装过程

    这篇文章主要介绍了Anaconda下Python中GDAL模块的下载与安装方法,本文介绍在Anaconda环境下,安装Python中栅格、矢量等地理数据处理库GDAL的方法,需要的朋友可以参考下
    2023-04-04
  • Python操作mongodb数据库的方法详解

    Python操作mongodb数据库的方法详解

    这篇文章主要介绍了Python操作mongodb数据库的方法,结合实例形式详细分析了Python下载、安装pymongo及操作MongoDB数据库相关实现技巧,需要的朋友可以参考下
    2018-12-12

最新评论