Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách sử dụng widget Notebook trong Tkinter
Trong giao diện người dùng (GUI) bằng Python, việc tổ chức và hiển thị thông tin một cách hiệu quả là rất quan trọng. Widget Notebook trong Tkinter cung cấp một giải pháp tiện lợi giúp bạn tạo ra các tab, cho phép người dùng dễ dàng chuyển đổi giữa các trang nội dung khác nhau trong cùng một cửa sổ ứng dụng. Bài viết này sẽ giới thiệu chi tiết cách sử dụng widget Notebook, từ việc tạo các tab cơ bản đến quản lý chúng, giúp bạn xây dựng giao diện người dùng trực quan và thân thiện hơn.
Giới thiệu về widget Tkinter Notebook
Widget Notebook cho phép bạn chọn các trang nội dung bằng cách nhấp vào các tab:
Khi bạn nhấp vào một trong các tab này, widget Notebook sẽ hiển thị một khung con (child pane) liên kết với tab được chọn. Thường thì một khung con là một widget Frame.
Để tạo một widget Notebook, bạn sử dụng lớp ttk.Notebook
như sau:
Bài viết này được đăng tại [free tuts .net]
notebook = ttk.Notebook(master, **kw)
Trong cú pháp này:
master
: Là widget cha của Notebook, thường là cửa sổ chính (main window).**kw
: Cho phép bạn chỉ định các tham số điều khiển giao diện của widget Notebook.
Widget Notebook có một số tùy chọn hữu ích, chẳng hạn như bạn có thể sử dụng tùy chọn height
và width
để chỉ định không gian cho widget. Ngoài ra, bạn có thể thêm khoảng trống xung quanh bên ngoài của widget bằng tùy chọn padding
.
Các phương thức của Notebook
Lớp ttk.Notebook
cung cấp nhiều phương thức hữu ích để bạn quản lý các tab một cách hiệu quả.
Dưới đây là mô tả về các phương thức được sử dụng phổ biến nhất:
add(child, **kwargs)
Phương thức add()
thêm một widget con vào cửa sổ. Đối số **kwargs
là một hoặc nhiều tùy chọn. Dưới đây là các tùy chọn quan trọng:
child
: Là widget để thêm vào Notebook.text
: Xác định nhãn (label) xuất hiện trên tab.image
: Xác định hình ảnh hiển thị trên tab.- Nếu bạn sử dụng cả
text
vàimage
, bạn cần sử dụng tùy chọncompound
. Tùy chọn này mô tả vị trí của hình ảnh so với văn bản. Nó có thể làtk.TOP
,tk.BOTTOM
,tk.LEFT
,tk.RIGHT
, hoặctk.CENTER
. Ví dụ,tk.LEFT
sẽ đặt hình ảnh bên trái văn bản. underline
: Xác định vị trí của ký tự trong văn bản trên tab sẽ được gạch chân.
hide(tabId)
Phương thức hide()
tạm thời loại bỏ tab được xác định bằng tabId
khỏi Notebook. Tab có chỉ mục bắt đầu từ 0, nghĩa là tab đầu tiên có chỉ mục là 0.
Để hiển thị lại tab, bạn cần gọi lại phương thức add()
. Không có phương thức show()
tương ứng.
forget(child)
Phương thức forget()
xóa vĩnh viễn widget con được chỉ định khỏi Notebook.
Ví dụ về widget Tkinter Notebook
Chương trình dưới đây sẽ minh họa cách tạo một Notebook với hai tab:
import tkinter as tk from tkinter import ttk # Tạo cửa sổ chính root = tk.Tk() root.geometry('400x300') root.title('Notebook Demo') # Tạo một Notebook notebook = ttk.Notebook(root) notebook.pack(pady=10, expand=True) # Tạo các Frame frame1 = ttk.Frame(notebook, width=400, height=280) frame2 = ttk.Frame(notebook, width=400, height=280) frame1.pack(fill='both', expand=True) frame2.pack(fill='both', expand=True) # Thêm các Frame vào Notebook notebook.add(frame1, text='Thông tin chung') notebook.add(frame2, text='Hồ sơ') # Chạy vòng lặp chính root.mainloop()
Kết quả:
Cách hoạt động
Đầu tiên, tạo một widget Notebook mà widget cha của nó là cửa sổ chính (root
):
notebook = ttk.Notebook(root) notebook.pack(pady=10, expand=True)
Tiếp theo, tạo hai Frame mà widget cha của chúng là Notebook:
frame1 = ttk.Frame(notebook, width=400, height=280) frame2 = ttk.Frame(notebook, width=400, height=280) frame1.pack(fill='both', expand=True) frame2.pack(fill='both', expand=True)
Cuối cùng, thêm các Frame này vào Notebook bằng phương thức add()
:
notebook.add(frame1, text='Thông tin chung') notebook.add(frame2, text='Hồ sơ')
Kết bài
Qua bài viết này, bạn đã nắm được cách tạo và sử dụng widget Notebook trong Tkinter để tạo các tab giao diện. Bạn đã học cách thêm, ẩn và xoá các tab bằng cách sử dụng các phương thức như add()
, hide()
, và forget()
. Với những kiến thức này, bạn có thể dễ dàng triển khai các giao diện phức tạp hơn, giúp nâng cao trải nghiệm người dùng trong ứng dụng của mình.