使用Python Tkinter创建简单的注册表格
Tkinter是一个用于开发GUI(图形用户界面)的Python库。我们使用Tkinter库创建UI(用户界面)应用程序,以创建窗口和所有其他图形用户界面。
如果使用Python 3.x(推荐),Tkinter会作为标准包随Python一起提供,因此我们不需要安装任何东西来使用它。
在Tkinter中创建注册表格之前,让我们先创建一个简单的Tkinter GUI应用程序。
创建一个简单的GUI应用程序
下面是仅通过导入Tkinter并设置其标题来创建一个窗口的程序 −
from tkinter import *
from tkinter import ttk
window = Tk()
window.title("欢迎使用TutorialsPoint")
window.geometry('325x250')
window.configure(background = "gray")
ttk.Button(window, text="你好,Tkinter").grid()
window.mainloop()
运行上述代码行后,您将看到输出类似于 −
让我们理解上面的代码行 −
- 首先,我们导入需要的所有模块,从Tkinter库导入了ttk和*(全部)。
-
要创建应用程序的主窗口,我们使用Tk类_
-
window.title(),为我们的窗口应用程序设置标题。
-
window.geometry(),设置窗口的大小,window.configure(),设置其背景颜色。
-
ttk.Button()创建一个按钮。
-
ttk.Button(window, text=”你好,Tkinter”).grid() – 窗口表示Tk,因此它会显示在我们创建的窗口中,text-将在窗口中显示文本,grid将在网格中制作它。
-
Window.mainloop(),此函数调用窗口的无尽循环,因此将保持打开直到用户关闭它
现在让我们尝试扩展我们之前的示例,通过在代码中添加一些标签(标签是一个简单的小部件,可以显示文本或图像)和按钮(通常将按钮直接映射到用户动作,这意味着单击按钮应该触发某些操作)。
from tkinter import *
from tkinter import ttk
window = Tk()
window.title("欢迎使用TutorialsPoint")
window.geometry('400x400')
window.configure(background = "grey");
a = Label(window ,text = "名字").grid(row = 0,column = 0)
b = Label(window ,text = "姓氏").grid(row = 1,column = 0)
c = Label(window ,text = "电子邮件").grid(row = 2,column = 0)
d = Label(window ,text = "联系号码").grid(row = 3,column = 0)
a1 = Entry(window).grid(row = 0,column = 1)
b1 = Entry(window).grid(row = 1,column = 1)
c1 = Entry(window).grid(row = 2,column = 1)
d1 = Entry(window).grid(row = 3,column = 1)
def clicked():
res = "欢迎来到 " + txt.get()
lbl.configure(text= res)
btn = ttk.Button(window ,text="提交").grid(row=4,column=0)
window.mainloop()
运行上面的代码后,我们将看到类似于下面的输出屏幕 −
现在让我们创建一个来自实际世界的东西,也许是一个贷款利率计算器。为此,我们需要知道一些项目(变量),如本金、贷款利率(r)、在s次付款后的余额(Bs)。要计算s次付款后的贷款余额,我们使用下面程序中的公式 −
Ps = ((1+r)^s.Bo)-(((1 + r)^s – 1)/r)*p
其中 −
Rate = 利率,如7.5%
i = 利率/100,年利率的小数
r = 期间率 = i/12
Po = 本金金额
Ps = s次付款后的余额
s = 每月付款数
p = 期间(每月)付款
以下是利率计算器程序,它将显示一个弹出窗口,用户可以在其中设置所需值(贷款金额,利率,分期数量),并借助Python tkinter库获得每月付款金额和剩余需支付的贷款金额。
from tkinter import *
fields = ('年利率', '分期数量', '贷款本金', '每月付款', '剩余贷款')
def monthly_payment(entries):
# 期间利率:
r = (float(entries['年利率'].get()) / 100) / 12
print("r", r)
# 贷款本金:
loan = float(entries['贷款本金'].get())
n = float(entries['分期数量'].get())
remaining_loan = float(entries['剩余贷款'].get())
q = (1 + r)** n
monthly = r * ( (q * loan - remaining_loan) / ( q - 1 ))
monthly = ("%8.2f" % monthly).strip()
entries['每月付款'].delete(0,END)
entries['每月付款'].insert(0, monthly )
print("每月付款: %f" % float(monthly))
def final_balance(entries):
# 期间利率:
r = (float(entries['年利率'].get()) / 100) / 12
print("r", r)
# 贷款本金:
loan = float(entries['贷款本金'].get())
n = float(entries['分期数量'].get())
q = (1 + r)** n
monthly = float(entries['每月付款'].get())
q = (1 + r)** n
remaining = q * loan - ( (q - 1) / r) * monthly
remaining = ("%8.2f" % remaining).strip()
entries['剩余贷款'].delete(0,END)
entries['剩余贷款'].insert(0, remaining )
print("剩余贷款: %f" % float(remaining))
def makeform(root, fields):
entries = {}
for field in fields:
row = Frame(root)
lab = Label(row, width=22, text=field+": ", anchor='w')
ent = Entry(row)
ent.insert(0,"0")
row.pack(side = TOP, fill = X, padx = 5 , pady = 5)
lab.pack(side = LEFT)
ent.pack(side = RIGHT, expand = YES, fill = X)
entries[field] = ent
return entries
if __name__ == '__main__':
root = Tk()
ents = makeform(root, fields)
root.bind('<Return>', (lambda event, e = ents: fetch(e)))
b1 = Button(root, text = '最终余额',
command=(lambda e = ents: final_balance(e)))
b1.pack(side = LEFT, padx = 5, pady = 5)
b2 = Button(root, text='每月付款',
command=(lambda e = ents: monthly_payment(e)))
b2.pack(side = LEFT, padx = 5, pady = 5)
b3 = Button(root, text = '退出', command = root.quit)
b3.pack(side = LEFT, padx = 5, pady = 5)
root.mainloop()
输出
从上面我们可以看到,用户可以通过输入贷款金额、利率和分期数量来找到最终(剩余)余额和每月付款。