Trong bài này, mình sẽ cùng anh em sẽ cùng tìm hiểu về Tkinter là gì? Cách tạo cửa sổ Tkinter đầu tiên và khái niệm Widget. Nếu đây là lần đầu tiên anh em đọc series này của mình thì có thể bắt đầu tại đây nha!
Tkinter là gì?
Tkinter là thư viện GUI tiêu chuẩn của Python, nghĩa là nó được cài đặt sẵn cùng với Python, anh em không cần phải pip install
gì cả. Đây là một trong những điểm nổi bật của Python so với những ngôn ngữ lập trình khác.
Tên gọi "Tkinter" là viết tắt của "Tk interface". Nó thực chất là một lớp "vỏ bọc" (wrapper) của Python cho bộ công cụ GUI có tên là Tcl/Tk - một một bộ công cụ rất lâu đời và ổn định. Hiểu đơn giản thì Tcl/Tk là động cơ của chiếc xe, còn Tkinter là vô lăng và bảng điều khiển.
- Ưu điểm: Có sẵn, nhẹ và đặc biệt là có thể chạy đa nền tảng.
- Nhược điểm: Nhược điểm lớn nhất của Tkinter là giao diện hơi cổ điển, tuy nhiên với anh em dev backend thì chắc cũng không quá quan trọng vụ này
. Nếu thích, anh em cải thiện giao diện với ttk, mình sẽ có một bài viết về nó sau.
Tạo cửa sổ Tkinter đầu tiên
Cũng giống như các framework/công cụ về GUI khác, mình sẽ cùng bắt đầu với bài toán "Hello World!" bằng cách tạo cửa sổ Tkinter đầu tiên:
import tkinter as tk # Import thư viện # Một cửa sổ là một đối tượng được tạo từ lớp tk.Tk()
# Theo quy ước, thường đặt tên biến này là 'root' hoặc 'window'
root = tk.Tk() root.title("Hello World!") # Đặt tiêu đề cho cửa sổ
root.geometry("400x300") # Đặt kích thước cửa sổ: rộng x cao # Khởi chạy vòng lặp sự kiện (Event Loop)
root.mainloop()
Widget là gì?
Nếu cửa sổ root
là một ngôi nhà, thì Widgets chính là đồ nội thất bên trong: cái bàn, cái ghế, cái tivi... Trong Tkinter, widget là các thành phần đồ họa như: nút bấm (Button
), nhãn dán (Label
), ô nhập liệu (Entry
), v.v.
Bây giờ, mình sẽ đặt món đồ nội thất đầu tiên vào ngôi nhà của mình: một cái nhãn dán (Label
) để hiển thị dòng chữ "Xin chào Tkinter!".
Để thêm một widget, cần 2 bước:
- Khởi tạo widget và chỉ định nó thuộc về cửa sổ nào.
- Đặt widget đó lên cửa sổ bằng một trình quản lý bố cục (
pack()
).pack()
là cách đơn giản nhất để hiển thị widget. Nó sẽ tự động tính toán vị trí và đặt widget vào cửa sổ, ngoài ra vẫn còn một số cách khác. Mình sẽ chia sẻ chi tiết vềpack()
và các cách đó ở các bài sau. Đoạn code trên được cập nhật như sau:
import tkinter as tk # --- Tạo cửa sổ chính ---
root = tk.Tk()
root.title("Ứng dụng có Widget")
root.geometry("400x300") # --- Tạo Widget ---
# Khởi tạo một Label
hello_label = tk.Label(root, text="Xin chào Tkinter!") # Đặt Widget lên cửa sổ
hello_label.pack() root.mainloop()
Như vậy là anh em đã có được bài Hello World đầu tiên rồi. Ở bài viết tiếp theo, mình sẽ cùng anh em sẽ đi sâu vào Bố cục giao diện, khám phá chi tiết về pack()
, grid()
, và place()
để sắp xếp các widget một cách chuyên nghiệp.