CodeGym /Các khóa học /Python SELF VI /Làm việc với các hộp thoại và cửa sổ bật lên

Làm việc với các hộp thoại và cửa sổ bật lên

Python SELF VI
Mức độ , Bài học
Có sẵn

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

  1. 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")
                
  2. 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")
                
  3. 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!")
                
  4. 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ề True hoặc False tù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

  1. 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)
                
  2. 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)
                
  3. 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ính root.
  • 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()
    
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION