一、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() |
下面就是运行结果 二、用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() |
账号密码我们都是输入的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相关的内容,有读者想看什么有趣的小程序都可以留言告诉笔者,每周六就会更新本人的原创文章。 谢谢各位读者的支持,你们的支持是我们最大的动力。 主 编 | 张祯悦 责 编 | 刘仕豪
|