1. Cửa sổ thoại tiêu chuẩn
Tkinter có module có sẵn messagebox để hiển thị các hộp thoại như thông báo thông tin, cảnh báo, lỗi và yêu cầu xác nhận. Các hộp thoại này tiện lợi cho việc tương tác với người dùng và tạo thông báo.
Import module messagebox
from tkinter import messagebox
Các loại hộp thoại chính với messagebox
- Hộp thông tin
Các hộp thông tin cung cấp cho người dùng những thông tin quan trọng. Sử dụng hàm
messagebox.showinfo().def show_info(): messagebox.showinfo("Thông tin", "Đây là thông báo thông tin") - Cảnh báo
Hộp cảnh báo thông báo về một vấn đề tiềm năng hoặc khuyến cáo cần chú ý đến một hành động nào đó. Hàm
messagebox.showwarning()tạo ra một hộp cảnh báo.def show_warning(): messagebox.showwarning("Cảnh báo", "Đây là thông báo cảnh báo") - Hộp lỗi
Hộp lỗi được hiển thị khi có lỗi xảy ra. Hàm
messagebox.showerror()phù hợp để thông báo cho người dùng về lỗi.def show_error(): messagebox.showerror("Lỗi", "Đã xảy ra lỗi!") - Yêu cầu xác nhận hành động
Yêu cầu xác nhận cho phép người dùng xác nhận hoặc hủy bỏ hành động. Hàm
messagebox.askyesno()trả vềTruehoặcFalsetùy thuộc vào lựa chọn của người dùng.def confirm_exit(): response = messagebox.askyesno("Thoát", "Bạn có chắc chắn muốn thoát?") if response: root.quit()
2. Chọn tệp và thư mục
Tkinter cũng cung cấp module filedialog, cho phép người dùng chọn tệp và thư mục. Điều này hữu ích cho các ứng dụng làm việc với tệp, nơi người dùng cần tải hoặc lưu tệp.
Import module filedialog
from tkinter import filedialog
Các hàm chính của filedialog
- Mở tệp: Hàm
askopenfilename()cho phép người dùng chọn tệp để mở.def open_file(): file_path = filedialog.askopenfilename( title="Mở tệp", filetypes=[("Tệp văn bản", "*.txt"), ("Tất cả các tệp", "*.*")]) if file_path: print("Tệp được chọn:", file_path) - Lưu tệp: Hàm
asksaveasfilename()cho phép người dùng chọn đường dẫn và tên để lưu tệp.def save_file(): file_path = filedialog.asksaveasfilename( title="Lưu tệp", defaultextension=".txt", filetypes=[("Tệp văn bản", "*.txt"), ("Tất cả các tệp", "*.*")]) if file_path: print("Tệp đã lưu với tên:", file_path) - Chọn thư mục: Hàm
askdirectory()cho phép chọn thư mục.def select_directory(): directory_path = filedialog.askdirectory(title="Chọn thư mục") if directory_path: print("Thư mục được chọn:", directory_path)
3. Cửa sổ bật lên tùy chỉnh
Ngoài các hộp thoại tiêu chuẩn, Tkinter cung cấp widget Toplevel để tạo cửa sổ bật lên tùy chỉnh. Các cửa sổ này có thể được sử dụng để tạo cửa sổ bật lên với các trường nhập liệu, nút bấm và các thành phần giao diện khác.
Tạo cửa sổ bật lên với Toplevel
import tkinter as tk
# Hàm mở cửa sổ bật lên
def open_popup():
popup = tk.Toplevel(root)
popup.title("Cửa sổ bật lên")
popup.geometry("300x200")
label = tk.Label(popup, text="Nhập tên của bạn:")
label.pack(pady=10)
entry = tk.Entry(popup)
entry.pack(pady=5)
# Nút để đóng cửa sổ
close_button = tk.Button(popup, text="Đóng", command=popup.destroy)
close_button.pack(pady=10)
# Cửa sổ chính
root = tk.Tk()
root.title("Cửa sổ chính")
root.geometry("400x300")
# Nút mở cửa sổ bật lên
open_button = tk.Button(root, text="Mở cửa sổ bật lên", command=open_popup)
open_button.pack(pady=50)
root.mainloop()
Giải thích mã
tk.Toplevel(root)tạo một cửa sổ mới hiển thị phía trên cửa sổ chínhroot.- Các thành phần trong cửa sổ: Trong cửa sổ bật lên có thể thêm nhãn, trường nhập liệu và nút bấm.
- Nút "Đóng": Hàm
popup.destroyđóng cửa sổ bật lên.
4. Ứng dụng đầy đủ với hộp thoại và cửa sổ bật lên
Giờ hãy kết hợp tất cả các thành phần đã nêu trong một ứng dụng bao gồm các hộp thoại tiêu chuẩn, chọn tệp và cửa sổ bật lên tùy chỉnh.
import tkinter as tk
from tkinter import messagebox, filedialog
# Hàm cho các hộp thoại tiêu chuẩn
def show_info():
messagebox.showinfo("Thông tin", "Đây là thông báo thông tin")
def show_warning():
messagebox.showwarning("Cảnh báo", "Đây là thông báo cảnh báo")
def show_error():
messagebox.showerror("Lỗi", "Đã xảy ra lỗi!")
def confirm_exit():
response = messagebox.askyesno("Thoát", "Bạn có chắc chắn muốn thoát?")
if response:
root.quit()
def open_file():
file_path = filedialog.askopenfilename(title="Mở tệp", filetypes=[("Tệp văn bản", "*.txt"), ("Tất cả các tệp", "*.*")])
if file_path:
messagebox.showinfo("Tệp được chọn", file_path)
def save_file():
file_path = filedialog.asksaveasfilename(title="Lưu tệp", defaultextension=".txt", filetypes=[("Tệp văn bản", "*.txt"), ("Tất cả các tệp", "*.*")])
if file_path:
messagebox.showinfo("Tệp đã lưu với tên", file_path)
def select_directory():
directory_path = filedialog.askdirectory(title="Chọn thư mục")
if directory_path:
messagebox.showinfo("Thư mục được chọn", directory_path)
# Hàm mở cửa sổ bật lên tùy chỉnh
def open_popup():
popup = tk.Toplevel(root)
popup.title("Cửa sổ bật lên")
popup.geometry("300x200")
tk.Label(popup, text="Nhập tên của bạn:").pack(pady=10)
name_entry = tk.Entry(popup)
name_entry.pack(pady=5)
tk.Button(popup, text="Đóng", command=popup.destroy).pack(pady=10)
# Cửa sổ chính
root = tk.Tk()
root.title("Ứng dụng với hộp thoại và cửa sổ bật lên")
root.geometry("400x400")
# Các nút chức năng cho các hộp thoại và cửa sổ bật lên
tk.Button(root, text="Thông tin", command=show_info).pack(pady=5)
tk.Button(root, text="Cảnh báo", command=show_warning).pack(pady=5)
tk.Button(root, text="Lỗi", command=show_error).pack(pady=5)
tk.Button(root, text="Xác nhận thoát", command=confirm_exit).pack(pady=5)
tk.Button(root, text="Mở tệp", command=open_file).pack(pady=5)
tk.Button(root, text="Lưu tệp", command=save_file).pack(pady=5)
tk.Button(root, text="Chọn thư mục", command=select_directory).pack(pady=5)
tk.Button(root, text="Mở cửa sổ bật lên", command=open_popup).pack(pady=20)
root.mainloop()
GO TO FULL VERSION