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

话不多说。

代码片:

# -*- 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="住址 :")
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参数设置隐藏输入字符的特性,所以也常被应用在用于输入密码的时候

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

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 的字符串内容

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()

运行结果:

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

账号为123456, 密码为132456

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

Entry 的 insert() 方法

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

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

例子:建立默认文字内容

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()方法判断长度,然后长度减一就行

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

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()

运行结果:

例子:删除最后一个

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

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

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

例子:

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()

运行结果:

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

(0)

相关推荐

  • python开发之tkinter实现图形随鼠标移动的方法

    本文实例讲述了python开发之tkinter实现图形随鼠标移动的方法.分享给大家供大家参考,具体如下: 做这个东西的时候,灵感源自于一个js效果: 两个眼睛随鼠标移动而移动 运行效果: 代码部分: from tkinter import * #1.获取到小圆当前的圆心坐标(x1, y1) #2.获取到小圆移动的圆心坐标(x2, y2) #3.把小圆从坐标(x1, y1)移动到坐标(x2, y2) __author__ = {'name' : 'Hongten', 'mail' : 'hongt

  • python中entry用法讲解

    小编之前向大家讲解了很多关于字符串的知识,大家也都知道字符串在python中的作用很大,那你知道在python中用于接收字符串等输入,让用户可与之交互以输入或操作字符串数据的对象是什么吗?是 python tkinter中的Entry 控件,下面我们来一看看吧. 1.Entry:用于接受用户Entry小窗口部件单行文本字符串 2.使用 Entry 控件的语法 w = Entry(master, option, ...) 注意:master 参数为其父控件, 就是用来放置这个 Entry 的控件.

  • Python Tkinter Entry和Text的添加与使用详解

    输入框和消息显示框是常用的GUI界面部件,其中输入框的重要任务就是返回一个输入的字符串,而消息显示框则要显示指定的信息. 功能:输入一个密码,如果密码正确则显示confirm,不正确则显示sorry __author__ = 'freedom' from Tkinter import * class App(Frame): def __init__(self,master): frame = Frame(master) frame.grid() self.ent = Entry(frame,sh

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

    话不多说. 代码片: # -*- 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() s

  • Python Tkinter基础控件用法

    本文实例展示了Python Tkinter基础控件的用法,分享给大家供大家参考之用.具体方法如下: # -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get() print 'btn Click and Entry value is %s' % evalue def btn_click_bind(event): print 'enter b2' def

  • Python Tkinter对话框控件使用详解

    目录 文件选择对话框 颜色选择对话框 消息对话框 除了基本的控件之外,Tkinter 还提供了三种对话框控件: 文件选择对话框:filedailog 颜色选择对话框:colorchooser 消息对话框:messagebox 这些对话框的使用能够在一定程度上增强用户的交互体验,下面对这些对话框控件进行详细地介绍. 文件选择对话框 文件对话框在 GUI 程序中经常的使用到,比如上传文档需要从本地选择一个文件,包括文件的打开和保存功能都需要一个文件对话框来实现.Tkinter 提供文件对话框被封装在

  • Python tkinter分隔控件(Seperator)的使用

    分隔控件的作用就是把控件分隔为几个部分.分隔控件有2两种:水平(HORIZONTAL )或者垂直(VERTICAL ).如果是使用grid布局管理器,需要使用sticky来拉伸分隔控件,否则可能只是窄窄的一条线.如果是使用pack布局管理器,使用使用fill来拉伸控件. 分隔控件的属性有: (1)class_ 分隔控件的名字. (2)Orient 分隔控件的方向.有水平和垂直两个方向. import tkinter as tk from tkinter import ttk root = tk.

  • Python Tkinter Menu控件使用详解

    目录 创建主目录菜单 创建下拉菜单 创建弹出菜单栏 菜单按钮控件 Menu 控件(菜单控件)可以说是 GUI 中“精髓所在”,它以可视化的方式将一系列的命令进行分组,在每一个分组下又可以“隐藏”许多的程序执行命令(即功能).当打开菜单时,这些命令就会“显式”的呈现出来,方便用户进行选择,比如 Windows 系统中记事本文件(.txt文件类型)的界面: 图1:Menu菜单界面 通过使用菜单控件(Menu)可以充分地节省有限的窗口区域,让我们的界面更加简洁优雅,避免臃肿.混乱. Tkinter M

  • 关于Python Tkinter Button控件command传参问题的解决方式

    环境:Ubuntu14.Python3.4.Pycharm2018 一.使用command=lambda: 的形式传参 代码如下 from tkinter import * import tkinter.messagebox as messagebox def createpage(master): master = Frame(root) master.pack() Label(master, text='num1').grid(row=0, column=0, stick=W, pady=1

  • Bootstrap实现input控件失去焦点时验证

    事实上,这是对应的"剪切"下来,然后"粘贴"到你的控件,请参见下面的代码的位置,所谓的透明背景图片: CClientDC CLDC(的getParent()); 的CRect矩形; 的CRect rect1; GetClientRect(RECT); GetWindowRect(rect1); 的getParent() - > ScreenToClient(rect1);如果 (m_dcBk.m_hDC == NULL){ m_dcBk.CreateCompa

  • Python中Qslider控件实操详解

    在学习一些pyqt5的内容后,我们对于其中的组件也有所接触.本篇所要带来的是Qslider控件,也可以说是python中比较常见的控件了.在一些具体的使用和方向等相关的操作上,很多人是没有全面的进行过系统学习的.下面我们就这些操作逐个为大家带来介绍,一起来看下Qslider控件的使用吧. 1.控件介绍和使用 qslider解释为滑块控件,用于方便左右滑动. 往往这类滑动更多用于屏幕可以触碰的设备. 我们想要使用滑块控件,本质上实则就是调用Qslider类. 使用的时候,首先对qslider这个类

  • Python使用pyecharts控件绘制图表

    目录 一.Echarts简介 1.特性 2.相关资源: 二.使用 1.柱状图-Bar 2.饼图-Pie 3.箱体图-Boxplot 4.折线图-Line 5.雷达图-Rader 6.散点图-scatter 7.图表布局 Grid 总结 一.Echarts简介 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可.而 Python 是一门富有表达力的语言,很适合用于数据处理.当数据分析遇上数据可视化时,pyecharts 诞生了. 分v0.5.x

随机推荐