Привет всем! Сегодня, надеюсь, мы закончим разбираться с созданием интерфейсов в Python с библиотекой Tkinter. Это уже пятая запись, предыдущие четыре доступны по ссылке. Поехали!
Для создания диалога выбора файлов в Tkinter используется следующая конструкция:
from tkinter import filedialog
file = filedialog.askopenfilename()
Как видно из кода — в переменной file будет содержаться полный путь к выбранному файлу. Кстати, если вам нужно организовать выбор нескольких файлов — используем конструкцию:
files = filedialog.askopenfilenames()
Интересно, что в случае необходимости можно ограничить пользователя выбором файлов только определенного типа:
file = filedialog.askopenfilename(filetypes = (('Только текстовые файлы','*.txt'),('Все файлы','*.*')))
Нужно дать возможность пользователю выбрать директорию? Используем конструкцию в виде:
dir = filedialog.askdirectory()
а если же нам нужно дать возможность выбрать директорию только по определенному пути — используем:
from os import path
file = filedialog.askopenfilename(initialdir= path.dirname(__file__))
Как видите — все просто 😉
Идем далее… теперь разберемся, как создавать меню. Для создания меню используется конструкция:
from tkinter import Menu
menu = Menu(window)
menu.add_command(label='File')
window.config(menu=menu)
Как видно из кода — мы вначале создаем меню, затем добавляем нашу первую метку и, наконец, назначаем меню нашему окну.
И да — вы конечно же можете добавить пункты меню в любое меню, используя функцию add_cascade(), например:
menu.add_cascade(label='File', menu=new_item)
Если мы все сделали правильно — после запуска кода мы получим нечто вроде:
Нужно два пункта в меню или больше? Все очень просто:
from tkinter import *
from tkinter import Menu
window = Tk()
window.title('Тест')
menu = Menu(window)
new_item = Menu(menu)
new_item.add_command(label='Новое')
menu.add_cascade(label='Файл', menu=new_item)
new_item.add_separator()
new_item.add_command(label='Редактирование')
window.config(menu=menu)
window.mainloop()
после запуска этого кода мы увидим:
Кстати! Как видно из скрина — по-умолчанию у нас в самом начале меню возникает пунктирная линия, по клику на которую мы получим меню, показывающееся в отдельном окошке. Что бы отключить эту функцию — нужно использовать:
new_item = Menu(menu, tearoff=0)
И — на всякий случай, конечно же — напомню, как создавать реакцию на клик по тому или иному пункту меню:
new_item.add_command(label='New', command=clicked)
Так — с созданием меню разобрались, однако — что делать, если нам нужно создать в меню несколько табов? В Tkinter это реализуется за три шага:
1. Сначала мы создаем элемент управления вкладками с помощью класса Notebook
Создайте вкладку, используя класс Frame.
Добавьте эту вкладку в элемент управления вкладками.
Упакуйте вкладку, чтобы она стала видимой в окне.
В видео кода это выглядит следующим образом:
from tkinter import *
from tkinter import ttk
window = Tk()
window.title('Test')
tab_control = ttk.Notebook(window)
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab_control.add(tab1, text='Первая вкладка')
tab_control.add(tab2, text='Вторая вкладка')
lbl1 = Label(tab1, text= 'Текст по первой вкладке')
lbl1.grid(column=0, row=0)
lbl2 = Label(tab2, text= 'Текст по второй вкладке')
lbl2.grid(column=0, row=0)
tab_control.pack(expand=1, fill='both')
window.mainloop()
Собственно, на этом все, что можно было сказать по поводу библиотеки Tkinter, с помощью которой можно создавать интерфейсы в Python 🙂 Спасибо за внимание!
В случае возникновения вопросов — пожалуйста, пишите на почту или в Telegram.
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️