前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python|GUI编程中Entry部件详解

Python|GUI编程中Entry部件详解

作者头像
算法与编程之美
发布2020-04-26 14:19:59
1.8K0
发布2020-04-26 14:19:59
举报
文章被收录于专栏:算法与编程之美

一、Entry部件基本介绍

Entry小部件是Tkinter的基本小部件,用于从应用程序的用户获取输入,即文本字符串。这个小部件允许用户输入一行文本。如果用户输入的字符串比小部件的可用显示空间长,则将滚动内容。这意味着不能看到字符串的整体。箭头键可用于移动到字符串的不可见部分。如果要输入多行文本,则必须使用文本小部件。

下面给大家介绍一下简单的Entry输入框创建:

import tkinter as tk windon = tk.Tk() tk.Label(windon, text="账号").grid(row=0) tk.Label(windon, text="密码").grid(row=1) e1 = tk.Entry(windon) e2 = tk.Entry(windon) e1.grid(row=0, column=1) e2.grid(row=1, column=1) windon.mainloop()

下面就是运行结果

图1.1 最基本的Entry组件

二、用Entry制作的输入框

好的,我们已经创建了输入字段,这样程序的用户就可以输入一些数据。但是我们的程序如何访问这些数据呢?我们如何阅读条目的内容?简而言之:get()方法就是我们要找的。我们用两个按钮“退出”和“显示”来扩展我们的小脚本。我们将函数show_entry_fields()绑定到一个自定的show按钮,该函数对entry对象使用get()方法。所以,每次点击这个按钮,输入字段的内容就会打印在我们调用脚本的终端上。

import tkinter as tk defshow_entry_fields(): print("账号: %s\n密码: %s" % (e1.get(), e2.get())) windon = tk.Tk()tk.Label(windon, text="账号").grid(row=0)tk.Label(windon, text="密码").grid(row=1) e1 = tk.Entry(windon)e2 = tk.Entry(windon,show = '*') e1.grid(row=0, column=1)e2.grid(row=1, column=1) tk.Button(windon, text='Quit', command=windon.quit).grid(row=3, column=0, sticky=tk.W, pady=4)tk.Button(windon, text='Show', command=show_entry_fields).grid(row=3, column=1, sticky=tk.W, pady=4) tk.mainloop()

下面为运行结果:

图1.2 运行结果

账号密码我们都是输入的123456789,但是密码一栏我们添加了show参数,可以将内容替换成我们指定符号。show的值一般为一个长度为1的字符。

三、Entry最简单的计算器实例化

了解了上面的操作之后,我们可以编写一个计算器功能,我但们并不是真的在编写计算器,而是提供一个能够计算任何数学表达式并打印结果的图形用户界面。

话不多说,直接上代码:

from tkinter import * #创建横条型框架 defframe(root, side): windon = Frame(root) windon.pack(side=side, expand=YES, fill=BOTH) return windon #创建按钮 defbutton(root, side, text, command=None): windon = Button(root, text=text, command=command) windon.pack(side=side, expand=YES, fill=BOTH) return windon #继承了Frame类,初始化程序界面的布局 classCalculator(Frame): def __init__(self): Frame.__init__(self) self.pack(expand=YES, fill=BOTH) self.master.title('Simple Calculater') display = StringVar() #添加输入框 Entry(self, relief=SUNKEN, textvariable=display).pack(side=TOP, expand=YES,fill=BOTH) #添加横条型框架以及里面的按钮 for key in ('123', '456', '789', '-0.'): keyF = frame(self, TOP) for char in key: button(keyF, LEFT, char, lambda w=display, c=char: w.set(w.get() + c)) opsF = frame(self, TOP) for char in '+-*/=': if char == '=': btn = button(opsF, LEFT, char) btn.bind('<ButtonRelease - 1>', lambda e, s=self, w=display: s.calc(w), '+') else: btn = button(opsF, LEFT, char, lambda w=display, s='%s' % char: w.set(w.get() + s)) clearF = frame(self, BOTTOM) button(clearF, LEFT, 'clear', lambda w=display: w.set('')) def calc(self, display): display.set(eval(display.get())) if__name__ == '__main__': Calculator().mainloop()

学会这个组件之后还能做更多有趣的小程序,我会根据读者的要求来更新更多和tkinter相关的内容,有读者想看什么有趣的小程序都可以留言告诉笔者,每周六就会更新本人的原创文章。

谢谢各位读者的支持,你们的支持是我们最大的动力。

END

主 编 | 张祯悦

责 编 | 刘仕豪


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档