Tkinter là thư viện Python phát triển GUI (Graphical User Interfaces). Dùng tkinter tạo ứng dụng UI, cửa sổ và các giao diện đồ họa.
Nếu dùng Python 3.x (khuyến nghị), Tkinter đi kèm Python như package chuẩn, không cần cài thêm.
Tạo ứng dụng GUI đơn giản
Chương trình tạo cửa sổ bằng import Tkinter và đặt title:
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()
Giải thích code:
- Import module cần thiết:
ttkvà*từ tkinter. - Tạo main window bằng class
Tk. window.title()đặt tiêu đề.window.geometry()đặt kích thước,window.configure()đặt màu nền.ttk.Button()tạo nút bấm..grid()hiển thị theo lưới.window.mainloop()vòng lặp vô tận giữ cửa sổ mở cho đến khi user đóng.
Mở rộng ví dụ: thêm Label (hiển thị text/ảnh) và Button (ánh xạ hành động user).
from tkinter import *
from tkinter import ttk
window = Tk()
window.title("Welcome to TutorialsPoint")
window.geometry('400x400')
window.configure(background="grey")
Label(window, text="First Name").grid(row=0, column=0)
Label(window, text="Last Name").grid(row=1, column=0)
Label(window, text="Email Id").grid(row=2, column=0)
Label(window, text="Contact Number").grid(row=3, column=0)
Entry(window).grid(row=0, column=1)
Entry(window).grid(row=1, column=1)
Entry(window).grid(row=2, column=1)
Entry(window).grid(row=3, column=1)
ttk.Button(window, text="Submit").grid(row=4, column=0)
window.mainloop()
Ứng dụng thực tế: Loan Interest Calculator (Máy tính lãi vay)
Cần: principal amount, loan rate (r), balance (Bs) sau s payments. Công thức tính loan sau s payment:
Ps = ((1+r)^s * Bo) - (((1 + r)^s - 1) / r) * p
- Rate = lãi suất như 7.5%
- i = rate/100, annual rate decimal
- r = period rate = i/12
- Po = Principal amount
- Ps = Balance sau s payments
- s = số tháng trả
- p = thanh toán hàng tháng
Chương trình hiển thị popup window, user nhập loan amount, rate, số kỳ trả, nhận được monthly payment và remaining loan.
from tkinter import *
fields = ('Annual Rate', 'Number of Payments', 'Loan Principle', 'Monthly Payment', 'Remaining Loan')
def monthly_payment(entries):
r = (float(entries['Annual Rate'].get()) / 100) / 12
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):
r = (float(entries['Annual Rate'].get()) / 100) / 12
loan = float(entries['Loan Principle'].get())
n = float(entries['Number of Payments'].get())
q = (1 + r) ** n
monthly = float(entries['Monthly Payment'].get())
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('', (lambda event, e=ents: fetch(e)))
Button(root, text='Final Balance', command=(lambda e=ents: final_balance(e))).pack(side=LEFT, padx=5, pady=5)
Button(root, text='Monthly Payment', command=(lambda e=ents: monthly_payment(e))).pack(side=LEFT, padx=5, pady=5)
Button(root, text='Quit', command=root.quit).pack(side=LEFT, padx=5, pady=5)
root.mainloop()
User có thể tìm final balance và monthly payment bằng cách nhập loan amount, rate, số kỳ trả.