python3.7.2 tkinter entry框限定输入数字的操作


Posted in Python onMay 22, 2021

网上找了挺久,感觉方法都不合适我这新手,想了个歪点子

from tkinter import *
from tkinter import messagebox
root=Tk()
def com():
    try:
        float(e1.get())#获取e1的值,转为浮点数,如果不能转捕获异常
        l1.config(text=e1.get())
    except:
        messagebox.showwarning('警告','请输入数字')
e1=Entry(root)
e1.pack()
Button(root,text='获取',command=com).pack()
l1=Label(root,text='只能数字')
l1.pack()
mainloop()

补充:python Entry 文本框只能输入数字或限定数字显示

先给大家看代码,表示对大家急切想法的尊敬,如果你着急用,直接拿去,不明白的话回来再看看后续,我争取讲的明白,我也是一个小白,我只能按照我自己的意思去写,如果有补充或者修改请联系我,也请不要完全相信我,我不喜欢把你们带到歧途!!!

import tkinter#界面绘制前初始化TK()
from tkinter import *
from PIL import Image,ImageTk
from tkinter import messagebox
#打开指定的图片文件,缩放至指定尺寸
def get_image(filename,width,height):
    im = Image.open(filename).resize((width,height))
    return ImageTk.PhotoImage(im)
win  = tkinter.Tk() #初始化TK() 创建主窗口
#设置标题
win.title("至多和")
#设置界面在中间启动
def center_window(w,h):
    #获取屏幕高和宽
    ws = win.winfo_screenwidth()
    hs = win.winfo_screenheight()
    #计算x,y位置
    x = (ws/2) - (w/2)
    y = (hs/2) - (h/2)
    win.geometry("%dx%d+%d+%d" %(w,h,x,y)) #设置位置和大小
center_window(300,200) #设置界面大小
win.resizable(False,False)  #固定其窗口的大小 也可以允许更改大小,改为TRUE 就可以
#创建画布,设置要显示的图片,把画布添加至应用程序窗口
canvas_win = tkinter.Canvas(win,width=300,height=200)
im_win = get_image('小猫启动界面.jpg',300,200)#设置图片的大小
canvas_win.create_image(150,100,image=im_win)
canvas_win.pack()
#设置图标
win.iconbitmap(".\\bitbug_favicon.ico")
#设置文本只能输入数字
def test(content):
    # 如果不加上==""的话,就会发现删不完。总会剩下一个数字 isdigit函数:isdigit函数方法检测字符串是否只由数字组成。
    if content.isdigit() or content == "":
        return True
    else:
        return False
def number():
    int
##显示文本框作为输入框,以及标签作为信息
lable1 = Label(win,text="账号:",)
lable1.place(x=60,y=30)
v = StringVar()  #跟踪变量的值的变化,以保证值的变更随时可以显示在界面上
test_cmd = win.register(test)  # 需要将函数包装一下,必要的
textEntry1 = Entry(win,bd=0,font=("华文彩云",12),relief=RIDGE,bg="lightcyan",
                    textvariable = v,  #文本框的值,是一个StringVar()对象 ,这样与StringVar 就能更新
                    validate = "key",  # 发生任何变动的时候,就会调用validatecommand 这个调动受后面‘Key'影响,类似键盘监听 如果换成“'focusout'"就是光标
                    validatecommand = (test_cmd, '%P')  # %P代表输入框的实时内容 # %P表示 当输入框的值允许改变,该值有效。该值为当前文本框内容 # %v(小写大写不一样的),当前validate的值  # %W表示该组件的名字
)
textEntry1.place(x=100,y=30,width=130,height=25)
lable2 = Label(win,text="密码:")
lable2.place(x=60,y=60)
textEntry2 = Entry(win,bd=0,font=("华文彩云"),relief=RIDGE,bg="lightcyan")
textEntry2.place(x=100,y=60,width=130)
win.mainloop()

上面是我的代码 运行后是这样的:

python3.7.2 tkinter entry框限定输入数字的操作

当你输入数字后,我账号的文本框是可以限定的,密码的还没做,我是想把密码设置成“*”,也非常简单先给看一下两个文本框输入数字不同的情况:

python3.7.2 tkinter entry框限定输入数字的操作

我先给大家介绍几个函数分别是:

1、StringVar()函数:

跟踪变量的值的变化,以保证值的变更随时可以显示在界面上。通过我的查找,这个函数存在Tk模块中,其他的我还没有查到,这个是为了能随时更新文本框内的内容,所以这个函数要用到

2、textvariable:

这个函数在Entry的括号内出现的,这个是和StringVar进行配合,然后进行更新内容。

3、validate和validatecommand:

这两个函数,讲真我还没有发现能分开用,一个类似于驱动,一个就是类似于被驱动后的命令,validate就是驱动着validatecommand,也可以说来就是调用。

validate他的值当然可以有很多的,我就说两个一个是等于Key也就是代码中的key就是为了键盘监听吧,另一个是focusout属于光标监听,只要有动作,就会调用validatecommand函数,他有两个变量:一个是调用另一个函数,另一个:

%P表示 当输入框的值允许改变,该值有效。该值为当前文本框内容

%v(小写大写不一样的),当前validate的值

%W表示该组件的名字

4、isdigit函数:

isdigit函数方法检测字符串是否只由数字组成。

5、win.register(test):

这个函数解释有很多,

第一个:是python抽象类—register注册虚拟子类

第二:register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其zhi保存在CPU的寄存器中,以加快其存储速度。这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。

而我们只是为了让他包装一下,让其函数进行回调,和用于注册程序退出时的回调函数,然后在回调函数中做一些资源操作

附:

在TK中是不允许框架背景透明化,比如我刚开始一直想让text或者标签背景透明,这样的话就会让界面更加好看,试了几种不同的方法,什么改背景色等等,但是都不可以,唯一可行的话就是麻烦一点,利用PS处理,就是P出图片,然后给标签或者文本框给予背景,但是相对于麻烦

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用实例解释Python中的继承和多态的概念
Apr 27 Python
Python中生成Epoch的方法
Apr 26 Python
Python常见异常分类与处理方法
Jun 04 Python
利用Python如何将数据写到CSV文件中
Jun 05 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
python3.7 openpyxl 删除指定一列或者一行的代码
Oct 08 Python
pytorch之ImageFolder使用详解
Jan 06 Python
keras模型保存为tensorflow的二进制模型方式
May 25 Python
Python 如何测试文件是否存在
Jul 31 Python
python接口自动化框架实战
Dec 23 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
Mar 03 Python
tensorboard 可视化之localhost:6006不显示的解决方案
pytorch训练神经网络爆内存的解决方案
粗暴解决CUDA out of memory的问题
May 22 #Python
pytorch中的model.eval()和BN层的使用
May 22 #Python
解决Pytorch中关于model.eval的问题
Pytorch 中net.train 和 net.eval的使用说明
May 22 #Python
对PyTorch中inplace字段的全面理解
May 22 #Python
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
JavaScript 学习笔记(十五)
2010/01/28 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
JS触摸事件、手势事件详解
2017/05/04 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
2018/04/22 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
教师绩效工资方案
2014/02/01 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
电影红河谷观后感
2015/06/11 职场文书
python Polars库的使用简介
2021/04/21 Python
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python
mysql sql常用语句大全
2022/06/21 MySQL
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android