使用 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("Welcome to TutorialsPoint") window.geometry('325x250') window.configure(background = "gray") ttk.Button(window, text="Hello, Tkinter").grid() window.mainloop()
运行以上代码行后,您将看到类似以下的输出:
让我们了解以上代码行:
首先,我们导入所有需要的模块,我们已从 tkinter 库中导入了 ttk 和 *(所有)。
要创建应用程序的主窗口,我们使用 Tk 类。
window.title(),为我们的窗口应用程序提供标题。
window.geometry(),设置窗口的大小,window.configure(),设置其背景颜色。
ttk.Button() 创建一个按钮。
ttk.Button(window, text="Hello, Tkinter").grid() – window 表示 Tk,因此它显示在我们创建的窗口中,text- 将在窗口中显示文本,grid 将使其处于网格中。
Window.mainloop(),此函数调用窗口的无限循环,因此将保持打开状态,直到用户关闭它。
让我们尝试扩展我们之前的示例,在代码中添加几个标签(标签是一个简单的部件,用于显示一段文本或图像)和按钮(按钮通常直接映射到用户操作,这意味着单击按钮时,应执行某些操作)。
from tkinter import * from tkinter import ttk window = Tk() window.title("Welcome to TutorialsPoint") window.geometry('400x400') window.configure(background = "grey"); a = Label(window ,text = "First Name").grid(row = 0,column = 0) b = Label(window ,text = "Last Name").grid(row = 1,column = 0) c = Label(window ,text = "Email Id").grid(row = 2,column = 0) d = Label(window ,text = "Contact Number").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 = "Welcome to " + txt.get() lbl.configure(text= res) btn = ttk.Button(window ,text="Submit").grid(row=4,column=0) window.mainloop()
运行以上代码后,我们将看到类似以下的输出屏幕:
现在让我们从现实世界中创建一些东西,也许是一个贷款利息计算器。为此,我们需要知道几个项目(变量),例如本金金额、贷款利率 (r)、s 次还款后的余额 (Bs)。要计算 s 次还款后的贷款,我们使用以下程序中的公式:
Ps = ((1+r)^s.Bo) – (((1 + r)^s – 1)/ r)*p
其中:
利率 = 利率,例如 7.5%
i = 利率/100,年利率(十进制)
r = 期利率 = i/12
Po = 本金金额
Ps = s 次还款后的余额
s = 每月还款次数
p = 期限(每月)还款额
因此,以下是利息计算器程序,它将显示一个弹出窗口,用户可以在其中设置所需的值(贷款金额、利率、分期付款次数),并借助 python tkinter 库获得每月还款金额以及他需要支付的剩余贷款。
from tkinter import * fields = ('Annual Rate', 'Number of Payments', 'Loan Principle', 'Monthly Payment', 'Remaining Loan') def monthly_payment(entries): # period rate: r = (float(entries['Annual Rate'].get()) / 100) / 12 print("r", r) # principal loan: loan = float(entries['Loan Principle'].get()) n = float(entries['Number of Payments'].get()) remaining_loan = float(entries['Remaining Loan'].get()) q = (1 + r)** n monthly = r * ( (q * loan - remaining_loan) / ( q - 1 )) monthly = ("%8.2f" % monthly).strip() entries['Monthly Payment'].delete(0,END) entries['Monthly Payment'].insert(0, monthly ) print("Monthly Payment: %f" % float(monthly)) def final_balance(entries): # period rate: r = (float(entries['Annual Rate'].get()) / 100) / 12 print("r", r) # principal loan: loan = float(entries['Loan Principle'].get()) n = float(entries['Number of Payments'].get()) q = (1 + r)** n monthly = float(entries['Monthly Payment'].get()) q = (1 + r)** n remaining = q * loan - ( (q - 1) / r) * monthly remaining = ("%8.2f" % remaining).strip() entries['Remaining Loan'].delete(0,END) entries['Remaining Loan'].insert(0, remaining ) print("Remaining Loan: %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 = 'Final Balance', command=(lambda e = ents: final_balance(e))) b1.pack(side = LEFT, padx = 5, pady = 5) b2 = Button(root, text='Monthly Payment', command=(lambda e = ents: monthly_payment(e))) b2.pack(side = LEFT, padx = 5, pady = 5) b3 = Button(root, text = 'Quit', command = root.quit) b3.pack(side = LEFT, padx = 5, pady = 5) root.mainloop()
输出
从上面我们可以看到,用户可以通过输入贷款金额、利率和还款次数来找到最终(剩余)余额和每月还款额。