1. Widget "Nhãn" (Label)
Hôm nay chúng ta sẽ tiếp tục làm quen với công cụ tuyệt vời này, cụ thể là nói về nhãn (Label) và ô văn bản (Text). Đúng vậy, đây chính là những gì bạn cần để ứng dụng của bạn không chỉ có thể thực hiện các nhiệm vụ khó khăn, mà còn chia sẻ những thành tựu tuyệt vời này với người dùng, dù là thông qua các thông điệp ngắn hay lượng lớn văn bản.
Trước khi đi sâu vào cuộc phiêu lưu với các ô văn bản, hãy bắt đầu với một cái gì đó dễ hơn — nhãn. Một nhãn trong Tkinter giống như một widget nhỏ và ấm cúng, cho phép chúng ta hiển thị thông tin tĩnh. Hầu như giống như một sticker trên tủ lạnh, chỉ khác là trong ứng dụng của bạn. Có thể được sử dụng cho tiêu đề, mô tả và thậm chí cả những câu châm ngôn.
Tạo và định dạng nhãn
Tạo một nhãn trong Tkinter còn dễ hơn học cú pháp mới của một ngôn ngữ lập trình (nhớ lại lần đầu tiên bạn học không?). Đây là một ví dụ mã với sử dụng nhãn:
import tkinter as tk
# Tạo cửa sổ chính
root = tk.Tk()
root.title("Nhãn đầu tiên của tôi")
# Tạo nhãn
label = tk.Label(root, text="Xin chào, thế giới!", font=("Arial", 14))
label.pack()
# Chạy vòng lặp sự kiện chính
root.mainloop()
Ở đây chúng ta đã tạo một nhãn, nó nói "Xin chào, thế giới!". Như bạn thấy, bạn có thể tùy chỉnh phông chữ và kích thước văn bản, điều này làm cho nó rất linh hoạt. Bạn hoàn toàn có thể chọn phong cách, kích thước và thậm chí màu sắc của văn bản để phù hợp với ý tưởng thiết kế của mình.
2. Widget "Ô văn bản" (Text)
Bây giờ khi chúng ta đã làm quen với nhãn, hãy bước lên một cấp độ cao hơn và nói về các ô văn bản. Ô văn bản (Text) giống như một cuốn sổ tay được tích hợp trong ứng dụng của bạn. Nó cho phép hiển thị và chỉnh sửa lượng lớn văn bản. Điều này hữu ích nếu bạn cần thêm khả năng để người dùng tương tác với nhiều văn bản hoặc bạn chỉ muốn cho họ thấy bạn đã viết bao nhiêu mã trong cuối tuần.
Sử dụng ô văn bản
Đây là một ví dụ về cách tạo một ô văn bản và điền vào nó một số văn bản:
import tkinter as tk
# Tạo cửa sổ chính
root = tk.Tk()
root.title("Ô văn bản")
# Tạo ô văn bản
text = tk.Text(root, height=10, width=40)
text.pack()
# Điền nội dung vào ô
text.insert(tk.END, "Ngày xửa ngày xưa, ở một thiên hà xa xôi...\n")
text.insert(tk.END, "Văn bản của bạn ở đây...")
# Chạy vòng lặp sự kiện chính
root.mainloop()
Như bạn thấy từ ví dụ, chúng ta có thể chèn văn bản vào ô văn bản bằng phương thức insert. Tham số tk.END chỉ ra rằng văn bản sẽ được thêm vào cuối văn bản hiện tại.
Tùy chỉnh phông chữ và phong cách văn bản
Đối với cả hai loại widget, chúng ta có thể tùy chỉnh phong cách văn bản. Điều này bao gồm phông chữ, kích thước, màu sắc và nhiều thứ khác. Đây là một ví dụ về cách làm điều đó cho nhãn và ô văn bản:
label = tk.Label(root, text="Xin chào, thế giới!", font=("Courier", 16, "bold"), fg="blue")
label.pack()
text.tag_configure("highlight", font=("Verdana", 12), foreground="red")
text.insert(tk.END, "Đoạn văn bản này sẽ được làm nổi bật", "highlight")
Ở đây chúng ta đã thay đổi phông chữ và màu sắc của văn bản trong nhãn và sử dụng các thẻ để làm nổi bật văn bản trong ô văn bản. Chú ý cách chúng ta sử dụng tag_configure cho ô văn bản: nó cho phép tạo một "thẻ", mà chúng ta có thể áp dụng cho bất kỳ phần nào của văn bản. Đây là công cụ mạnh mẽ, cho phép bạn quản lý phong cách của các phần cụ thể trong văn bản trong ô.
3. Tích hợp trong ứng dụng
Bây giờ khi chúng ta biết cách tạo và tùy chỉnh nhãn và ô văn bản, hãy cùng xem một ví dụ thực tế về cách sử dụng chúng trong một ứng dụng. Hãy tưởng tượng chúng ta tạo một trình soạn thảo văn bản đơn giản. Trình soạn thảo này có thể hiển thị và chỉnh sửa các tệp văn bản.
import tkinter as tk
from tkinter import filedialog
# Hàm để mở tệp
def open_file():
file_path = filedialog.askopenfilename()
if file_path:
with open(file_path, 'r') as file:
content = file.read()
text.delete(1.0, tk.END)
text.insert(tk.END, content)
# Tạo cửa sổ chính
root = tk.Tk()
root.title("Trình soạn thảo văn bản")
# Tạo các widget
label = tk.Label(root, text="Trình soạn thảo văn bản", font=("Arial", 16))
label.pack()
text = tk.Text(root, wrap='word', font=("Arial", 12))
text.pack(expand=1, fill='both')
open_button = tk.Button(root, text="Mở tệp", command=open_file)
open_button.pack()
# Chạy vòng lặp sự kiện chính
root.mainloop()
Trong ví dụ này, chúng ta đã tạo một ứng dụng đơn giản cho phép người dùng mở các tệp văn bản và xem nội dung của chúng trong ô văn bản. Sử dụng widget Button, chúng ta đã liên kết lệnh mở tệp với hàm open_file, hàm này sử dụng hộp thoại filedialog để chọn tệp. Điều này thú vị hơn nhiều so với việc chỉ nhìn vào văn bản "Hello World", đúng không?
4. Xử lý thay đổi văn bản
Khi bạn làm việc với văn bản, bạn có thể cần phản ứng với các thay đổi: có thể là xuất văn bản ra lại vào console (hoặc tệp) hoặc cập nhật các phần khác của giao diện. Tkinter cung cấp nhiều cách để theo dõi các thay đổi trong văn bản.
Tuy nhiên, nếu bạn muốn làm điều gì đó chuyên biệt hơn, chẳng hạn như tìm kiếm văn bản hoặc thay thế theo một điều kiện nào đó, bạn sẽ cần viết các hàm tương ứng. Để bắt đầu, bạn có thể sử dụng các phương thức get() và delete() để trích xuất và thay đổi văn bản trong widget.
Vì vậy, bây giờ bạn đã có tất cả các công cụ để tạo một ứng dụng nhỏ không chỉ hiển thị thông tin mà còn cho phép người dùng tương tác với nó. Hy vọng rằng bài học về nhãn và ô văn bản không chỉ hữu ích mà còn thú vị. Lần tới khi bạn thấy một ô văn bản trong ứng dụng, bạn sẽ biết rằng nó có thể được làm bằng Tkinter, và một nhãn — không chỉ là một dòng văn bản mà là cả một triết lý về giao tiếp với người dùng.
GO TO FULL VERSION