CodeGym /Kurs Javy /Python SELF PL /Praca z oknami dialogowymi i wyskakującymi

Praca z oknami dialogowymi i wyskakującymi

Python SELF PL
Poziom 50 , Lekcja 1
Dostępny

1. Standardowe okna dialogowe

Tkinter ma wbudowany moduł messagebox do wyświetlania okien dialogowych, takich jak komunikaty informacyjne, ostrzeżenia, błędy i zapytania o potwierdzenie. Te dialogi są przydatne do komunikacji z użytkownikiem i tworzenia powiadomień.

Podłączenie modułu messagebox


from tkinter import messagebox

Główne rodzaje dialogów w messagebox

  1. Okno informacyjne

    Okna informacyjne przekazują użytkownikowi istotne informacje. Używa się funkcji messagebox.showinfo().

    
    def show_info():
        messagebox.showinfo("Informacja", "To jest komunikat informacyjny")
                
  2. Ostrzeżenie

    Okna ostrzegawcze informują o potencjalnym problemie lub sugerują zwrócenie uwagi na określone działanie. Funkcja messagebox.showwarning() tworzy takie okno.

    
    def show_warning():
        messagebox.showwarning("Ostrzeżenie", "To jest komunikat ostrzegawczy")
                
  3. Okno błędu

    Okno błędu wyświetlane jest, gdy wystąpi błąd. Funkcja messagebox.showerror() jest przydatna do powiadamiania użytkownika o błędach.

    
    def show_error():
        messagebox.showerror("Błąd", "Wystąpił błąd!")
                
  4. Zapytanie o potwierdzenie akcji

    Zapytania o potwierdzenie umożliwiają użytkownikowi potwierdzenie lub anulowanie czynności. Funkcja messagebox.askyesno() zwraca True lub False w zależności od wyboru użytkownika.

    
    def confirm_exit():
        response = messagebox.askyesno("Wyjście", "Czy na pewno chcesz wyjść?")
        if response:
            root.quit()
                

2. Wybór plików i folderów

Tkinter oferuje także moduł filedialog, który pozwala użytkownikom wybierać pliki i foldery. Jest to przydatne w aplikacjach, które pracują z plikami, gdy użytkownik musi załadować lub zapisać plik.

Podłączenie modułu filedialog


from tkinter import filedialog

Główne funkcje modułu filedialog

  1. Otwieranie pliku: Funkcja askopenfilename() pozwala użytkownikowi wybrać plik do otwarcia.
    
    def open_file():
        file_path = filedialog.askopenfilename(
            title="Otwórz plik",
            filetypes=[("Pliki tekstowe", "*.txt"), ("Wszystkie pliki", "*.*")])
        if file_path:
            print("Plik wybrany:", file_path)
                
  2. Zapisywanie pliku: Funkcja asksaveasfilename() pozwala użytkownikowi wybrać ścieżkę i nazwę dla zapisanego pliku.
    
    def save_file():
        file_path = filedialog.asksaveasfilename(
            title="Zapisz plik",
            defaultextension=".txt",
            filetypes=[("Pliki tekstowe", "*.txt"), ("Wszystkie pliki", "*.*")])
        if file_path:
            print("Plik zapisany jako:", file_path)
                
  3. Wybór folderu: Funkcja askdirectory() pozwala wybrać folder.
    
    def select_directory():
        directory_path = filedialog.askdirectory(title="Wybierz folder")
        if directory_path:
            print("Folder wybrany:", directory_path)
                

3. Niestandardowe wyskakujące okna

Oprócz standardowych okien dialogowych, Tkinter oferuje widżet Toplevel do tworzenia niestandardowych wyskakujących okien. Można je używać do tworzenia okien z polami wprowadzania, przyciskami i innymi elementami interfejsu.

Tworzenie wyskakującego okna za pomocą Toplevel


import tkinter as tk

# Funkcja do otwierania wyskakującego okna
def open_popup():
    popup = tk.Toplevel(root)
    popup.title("Wyskakujące okno")
    popup.geometry("300x200")

    label = tk.Label(popup, text="Wpisz swoje imię:")
    label.pack(pady=10)

    entry = tk.Entry(popup)
    entry.pack(pady=5)

    # Przycisk do zamykania okna
    close_button = tk.Button(popup, text="Zamknij", command=popup.destroy)
    close_button.pack(pady=10)

# Okno główne
root = tk.Tk()
root.title("Okno główne")
root.geometry("400x300")

# Przycisk do wywoływania wyskakującego okna
open_button = tk.Button(root, text="Otwórz wyskakujące okno", command=open_popup)
open_button.pack(pady=50)

root.mainloop()
    

Objaśnienie kodu

  • tk.Toplevel(root) tworzy nowe okno, które wyświetla się nad głównym oknem root.
  • Elementy okna: W wyskakującym oknie można dodawać etykiety, pola wprowadzania i przyciski.
  • Przycisk "Zamknij": Funkcja popup.destroy zamyka wyskakujące okno.

4. Kompleksowa aplikacja z dialogami i wyskakującymi oknami

Teraz połączymy wszystkie omówione elementy w jednej aplikacji, która zawiera standardowe okna dialogowe, możliwość wyboru plików i niestandardowe wyskakujące okno.


import tkinter as tk
from tkinter import messagebox, filedialog

# Funkcje dla standardowych dialogów
def show_info():
    messagebox.showinfo("Informacja", "To jest komunikat informacyjny")

def show_warning():
    messagebox.showwarning("Ostrzeżenie", "To jest komunikat ostrzegawczy")

def show_error():
    messagebox.showerror("Błąd", "Wystąpił błąd!")

def confirm_exit():
    response = messagebox.askyesno("Wyjście", "Czy na pewno chcesz wyjść?")
    if response:
        root.quit()

def open_file():
    file_path = filedialog.askopenfilename(title="Otwórz plik", filetypes=[("Pliki tekstowe", "*.txt"), ("Wszystkie pliki", "*.*")])
    if file_path:
        messagebox.showinfo("Plik wybrany", file_path)

def save_file():
    file_path = filedialog.asksaveasfilename(title="Zapisz plik", defaultextension=".txt", filetypes=[("Pliki tekstowe", "*.txt"), ("Wszystkie pliki", "*.*")])
    if file_path:
        messagebox.showinfo("Plik zapisany jako", file_path)

def select_directory():
    directory_path = filedialog.askdirectory(title="Wybierz folder")
    if directory_path:
        messagebox.showinfo("Folder wybrany", directory_path)

# Funkcja dla niestandardowego wyskakującego okna
def open_popup():
    popup = tk.Toplevel(root)
    popup.title("Wyskakujące okno")
    popup.geometry("300x200")

    tk.Label(popup, text="Wpisz swoje imię:").pack(pady=10)
    name_entry = tk.Entry(popup)
    name_entry.pack(pady=5)

    tk.Button(popup, text="Zamknij", command=popup.destroy).pack(pady=10)

# Okno główne
root = tk.Tk()
root.title("Aplikacja z oknami dialogowymi i wyskakującymi")
root.geometry("400x400")

# Przyciski do wywoływania różnych dialogów i wyskakujących okien
tk.Button(root, text="Informacja", command=show_info).pack(pady=5)
tk.Button(root, text="Ostrzeżenie", command=show_warning).pack(pady=5)
tk.Button(root, text="Błąd", command=show_error).pack(pady=5)
tk.Button(root, text="Potwierdzenie wyjścia", command=confirm_exit).pack(pady=5)
tk.Button(root, text="Otwórz plik", command=open_file).pack(pady=5)
tk.Button(root, text="Zapisz plik", command=save_file).pack(pady=5)
tk.Button(root, text="Wybierz folder", command=select_directory).pack(pady=5)
tk.Button(root, text="Otwórz wyskakujące okno", command=open_popup).pack(pady=20)

root.mainloop()
    
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION