使用 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()
輸出
從上面我們可以看到,使用者可以透過輸入貸款金額、利率和還款次數來找到最終(剩餘)餘額和每月還款額。