使用 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()

输出

从上面我们可以看到,用户可以通过输入贷款金额、利率和还款次数来找到最终(剩余)余额和每月还款额。

更新于: 2019-07-30

20K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告