1. Стандартні діалогові вікна
Tkinter має вбудований модуль messagebox для відображення діалогових вікон, таких як інформаційні повідомлення, попередження, помилки та запити підтвердження. Ці діалоги зручні для спілкування з користувачем і створення сповіщень.
Підключення модуля messagebox
from tkinter import messagebox
Основні типи діалогів з messagebox
- Інформаційне вікно
Інформаційні вікна повідомляють користувачу важливі відомості. Використовується функція
messagebox.showinfo().def show_info(): messagebox.showinfo("Інформація", "Це інформаційне повідомлення") - Попередження
Попереджувальне вікно повідомляє про потенційну проблему або рекомендує звернути увагу на певну дію. Функція
messagebox.showwarning()створює вікно попередження.def show_warning(): messagebox.showwarning("Попередження", "Це попереджувальне повідомлення") - Вікно помилки
Вікно помилки відображається при виникненні помилки. Функція
messagebox.showerror()підходить для повідомлення користувача про помилку.def show_error(): messagebox.showerror("Помилка", "Сталася помилка!") - Запит підтвердження дії
Запити підтвердження дозволяють користувачу підтвердити або скасувати дію. Функція
messagebox.askyesno()повертаєTrueабоFalseзалежно від вибору користувача.def confirm_exit(): response = messagebox.askyesno("Вихід", "Ви впевнені, що хочете вийти?") if response: root.quit()
2. Вибір файлів і папок
Tkinter також надає модуль filedialog, який дозволяє користувачам вибирати файли і папки. Це корисно для застосунків, які працюють з файлами, де користувачу потрібно завантажити або зберегти файл.
Підключення модуля filedialog
from tkinter import filedialog
Основні функції filedialog
- Відкриття файлу: Функція
askopenfilename()дозволяє користувачу вибрати файл для відкриття.def open_file(): file_path = filedialog.askopenfilename( title="Відкрити файл", filetypes=[("Текстові файли", "*.txt"), ("Усі файли", "*.*")]) if file_path: print("Файл обрано:", file_path) - Збереження файлу: Функція
asksaveasfilename()дозволяє користувачу вибрати шлях і назву для збереження файлу.def save_file(): file_path = filedialog.asksaveasfilename( title="Зберегти файл", defaultextension=".txt", filetypes=[("Текстові файли", "*.txt"), ("Усі файли", "*.*")]) if file_path: print("Файл збережено як:", file_path) - Вибір папки: Функція
askdirectory()дозволяє вибрати папку.def select_directory(): directory_path = filedialog.askdirectory(title="Обрати папку") if directory_path: print("Папку обрано:", directory_path)
3. Налаштовувані спливаючі вікна
У доповнення до стандартних діалогових вікон, Tkinter надає віджет Toplevel для створення налаштовуваних спливаючих вікон. Ці вікна можна використовувати для створення багатофункціональних спливаючих вікон з полями введення, кнопками та іншими елементами інтерфейсу.
Створення спливаючого вікна з Toplevel
import tkinter as tk
# Функція для відкриття спливаючого вікна
def open_popup():
popup = tk.Toplevel(root)
popup.title("Спливаюче вікно")
popup.geometry("300x200")
label = tk.Label(popup, text="Введіть ваше ім'я:")
label.pack(pady=10)
entry = tk.Entry(popup)
entry.pack(pady=5)
# Кнопка для закриття вікна
close_button = tk.Button(popup, text="Закрити", command=popup.destroy)
close_button.pack(pady=10)
# Основне вікно
root = tk.Tk()
root.title("Основне вікно")
root.geometry("400x300")
# Кнопка для виклику спливаючого вікна
open_button = tk.Button(root, text="Відкрити спливаюче вікно", command=open_popup)
open_button.pack(pady=50)
root.mainloop()
Пояснення коду
tk.Toplevel(root)створює нове вікно, яке відображається поверх основного вікнаroot.- Елементи вікна: Всередині спливаючого вікна можна додавати мітки, поля введення та кнопки.
- Кнопка "Закрити": Функція
popup.destroyзакриває спливаюче вікно.
4. Повноцінний додаток з діалогами і спливаючими вікнами
Тепер зберемо всі розглянуті елементи в одному додатку, яке включає стандартні діалогові вікна, вибір файлів і користувацьке спливаюче вікно.
import tkinter as tk
from tkinter import messagebox, filedialog
# Функції для стандартних діалогів
def show_info():
messagebox.showinfo("Інформація", "Це інформаційне повідомлення")
def show_warning():
messagebox.showwarning("Попередження", "Це попереджувальне повідомлення")
def show_error():
messagebox.showerror("Помилка", "Сталася помилка!")
def confirm_exit():
response = messagebox.askyesno("Вихід", "Ви впевнені, що хочете вийти?")
if response:
root.quit()
def open_file():
file_path = filedialog.askopenfilename(title="Відкрити файл", filetypes=[("Текстові файли", "*.txt"), ("Усі файли", "*.*")])
if file_path:
messagebox.showinfo("Файл обрано", file_path)
def save_file():
file_path = filedialog.asksaveasfilename(title="Зберегти файл", defaultextension=".txt", filetypes=[("Текстові файли", "*.txt"), ("Усі файли", "*.*")])
if file_path:
messagebox.showinfo("Файл збережено як", file_path)
def select_directory():
directory_path = filedialog.askdirectory(title="Обрати папку")
if directory_path:
messagebox.showinfo("Папку обрано", directory_path)
# Функція для налаштовуваного спливаючого вікна
def open_popup():
popup = tk.Toplevel(root)
popup.title("Спливаюче вікно")
popup.geometry("300x200")
tk.Label(popup, text="Введіть ваше ім'я:").pack(pady=10)
name_entry = tk.Entry(popup)
name_entry.pack(pady=5)
tk.Button(popup, text="Закрити", command=popup.destroy).pack(pady=10)
# Основне вікно
root = tk.Tk()
root.title("Додаток з діалоговими і спливаючими вікнами")
root.geometry("400x400")
# Кнопки для виклику різних діалогів і спливаючих вікон
tk.Button(root, text="Інформація", command=show_info).pack(pady=5)
tk.Button(root, text="Попередження", command=show_warning).pack(pady=5)
tk.Button(root, text="Помилка", command=show_error).pack(pady=5)
tk.Button(root, text="Підтвердження виходу", command=confirm_exit).pack(pady=5)
tk.Button(root, text="Відкрити файл", command=open_file).pack(pady=5)
tk.Button(root, text="Зберегти файл", command=save_file).pack(pady=5)
tk.Button(root, text="Обрати папку", command=select_directory).pack(pady=5)
tk.Button(root, text="Відкрити спливаюче вікно", command=open_popup).pack(pady=20)
root.mainloop()
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ