Hướng dẫn xây dựng giao diện máy tính đơn giản bằng Tkinter
Bước 1: Cài đặt Tkinter
Tkinter được tích hợp sẵn trong Python, vì vậy bạn không cần cài đặt thêm thư viện nào khác. Chỉ cần chắc chắn rằng bạn đã cài đặt Python trên máy tính của mình.

Bước 2: Tạo cửa sổ chính
Đầu tiên, chúng ta sẽ tạo cửa sổ chính của ứng dụng máy tính.
import tkinter as tk
# Tạo cửa sổ chính
root = tk.Tk()
root.title("Simple Calculator")
# Chạy ứng dụng
root.mainloop()
Đoạn code trên sẽ tạo cho chúng ta 1 giao diện đơn giản:

Bước 3: Tạo khung nhập liệu
Tiếp theo, chúng ta sẽ tạo một khung nhập liệu để hiển thị các con số và kết quả.
Đặt đoạn code sau trước lệnh root.mainloop()
trong đoạn code trên.
# Tạo khung nhập liệu
entry = tk.Entry(root, width=35, borderwidth=5)
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)
Ta sẽ có được một khung nhập liệu:

Bước 4: Định nghĩa các hàm xử lý
Chúng ta cần định nghĩa các hàm để xử lý sự kiện khi người dùng nhấn các nút bấm.
Đặt đoạn code sau trước lệnh root.mainloop()
trong đoạn code trên.
# Định nghĩa các hàm xử lý
def button_click(number):
current = entry.get()
entry.delete(0, tk.END)
entry.insert(0, str(current) + str(number))
def button_clear():
entry.delete(0, tk.END)
def button_equal():
try:
result = str(eval(entry.get()))
entry.delete(0, tk.END)
entry.insert(0, result)
except:
entry.delete(0, tk.END)
entry.insert(0, "Error")
Bước 5: Tạo các nút bấm
Bây giờ, chúng ta sẽ tạo các nút bấm cho các con số và các phép toán.
Đặt đoạn code sau trước lệnh root.mainloop()
trong đoạn code trên.
# Tạo các nút bấm
button_1 = tk.Button(root, text="1", padx=20, pady=20, command=lambda: button_click(1))
button_2 = tk.Button(root, text="2", padx=20, pady=20, command=lambda: button_click(2))
button_3 = tk.Button(root, text="3", padx=20, pady=20, command=lambda: button_click(3))
button_4 = tk.Button(root, text="4", padx=20, pady=20, command=lambda: button_click(4))
button_5 = tk.Button(root, text="5", padx=20, pady=20, command=lambda: button_click(5))
button_6 = tk.Button(root, text="6", padx=20, pady=20, command=lambda: button_click(6))
button_7 = tk.Button(root, text="7", padx=20, pady=20, command=lambda: button_click(7))
button_8 = tk.Button(root, text="8", padx=20, pady=20, command=lambda: button_click(8))
button_9 = tk.Button(root, text="9", padx=20, pady=20, command=lambda: button_click(9))
button_0 = tk.Button(root, text="0", padx=20, pady=20, command=lambda: button_click(0))
button_add = tk.Button(root, text="+", padx=20, pady=20, command=lambda: button_click("+"))
button_subtract = tk.Button(root, text="-", padx=20, pady=20, command=lambda: button_click("-"))
button_multiply = tk.Button(root, text="*", padx=20, pady=20, command=lambda: button_click("*"))
button_divide = tk.Button(root, text="/", padx=20, pady=20, command=lambda: button_click("/"))
button_equal = tk.Button(root, text="=", padx=20, pady=20, command=button_equal)
button_clear = tk.Button(root, text="C", padx=20, pady=20, command=button_clear)
Giao diện của chúng ta sẽ chưa thay đổi vì chúng ta vẫn chưa đặt các nút trên nó.
Bước 6: Đặt các nút bấm lên giao diện
Chúng ta sẽ đặt các nút bấm lên lưới để tạo giao diện người dùng.
Đặt đoạn code sau trước lệnh root.mainloop()
trong đoạn code trên.
# Đặt các nút bấm lên lưới
buttons = [
button_1, button_2, button_3, button_add,
button_4, button_5, button_6, button_subtract,
button_7, button_8, button_9, button_multiply,
button_clear, button_0, button_equal, button_divide
]
row = 1
col = 0
for button in buttons:
button.grid(row=row, column=col)
col += 1
if col > 3:
col = 0
row += 1
Kết quả
Sau khi hoàn thành các bước trên, bạn sẽ có một ứng dụng máy tính đơn giản với giao diện như hình dưới đây:

Bạn hãy trải nghiệm xem các tính năng có hoạt động chính xác không nhé.
Giao diện vẫn chưa được đẹp lắm, các bạn hãy chỉnh sửa lại giao diện đẹp hơn, bổ sung thêm tính năng rồi gửi về hocpython.org để nhận được voucher khuyến mãi tốt nhất nhé!
Hy vọng hướng dẫn này giúp bạn dễ dàng xây dựng ứng dụng máy tính của riêng mình! Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại bình luận. Chúc bạn thành công!