Python пример программы с окнами

В предыдущей главе мы рассмотрели, как использовать однострочное текстовое поле Entry. Его использование оправдано при необходимости ввода небольшого количества информации. Например: поле ввода ответа в чате или строка поиска. А как быть, если требуется многострочное текстовое поле? Например, для создания блокнота?

Для этого используется виджет tkinter – Text.

Продвинутый Tkinter: работа с классами

Если вы раньше работали с модулем Tkinter, вы, вероятно, знаете, что в нем существует множество функций графического интерфейса, которые можно использовать для создания приложения.

Однако на практике быстро становится ясно, что в модуле есть гораздо больше полезного, чем кажется на первый взгляд.

В tkinter есть много скрытых функций, и одна из них — метод использования классов. Сегодня мы поработаем с классами в Tkinter.

Настройка модуля Tkinter

Устанавливать что-либо дополнительно нет никакой необходимости, так как модуль tkinter является частью стандартной библиотеки Python.

Всплывающее окно в python #short

Чтобы работать с классами, нам нужно импортировать модуль tkinter.

# Importing the tkinter module import tkinter as tk # Used for styling the GUI from tkinter import tkk

Как видите, мы также отдельно импортировали пакет ttk для простоты использования.

Работа с классами в Tkinter

Итак, давайте разберемся, как работать с классами в Tkinter. Принцип работы приложения довольно прост.

Сначала мы создаем корневое окно (root window), поверх которого помещаем один фрейм (frame, или рамка).

Чтобы это выглядело как приложение с разными окнами, давайте также создадим функцию, которая переключается с одного фрейма на другой. Так мы создадим для пользователя иллюзию, что он перенаправляется на другое окно/вкладку, но на самом деле он будет просто переключаться между фреймами.

Читайте также:
Как в программе фсс закрыть больничный лист

Фреймы, с которыми мы будем работать, – это MainPage, SidePage и CompletionScreen.

Для переключения между ними мы будем использовать метод show_frame().

Написание кода

Для начала давайте создадим базовый класс, из которого мы будем обращаться ко всем остальным классам/фреймам.

# Allowing us to extend from the Tk class class testClass(tk.Tk):

Расширение класса tk.Tk позволяет нам работать с компонентами, присутствующими в классе Tk().

1: Инициализация классов

Чтобы инициализировать класс, мы используем функцию __init__. Она создает метод, который запускается сам по себе при формировании объекта из класса.

Аналогичным образом мы инициализируем класс через tk.Tk __init__.

import tkinter as tk from tkinter import ttk class windows(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) # Adding a title to the window self.wm_title(«Test Application») # creating a frame and assigning it to container container = tk.Frame(self, height=400, width=600) # specifying the region where the frame is packed in root container.pack(side=»top», fill=»both», expand=True) # configuring the location of the container using grid container.grid_rowconfigure(0, weight=1) container.grid_columnconfigure(0, weight=1) # We will now create a dictionary of frames self.frames = <> # we’ll create the frames themselves later but let’s add the components to the dictionary. for F in (MainPage, SidePage, CompletionScreen): frame = F(container, self) # the windows class acts as the root window for the frames. self.frames[F] = frame frame.grid(row=0, column=0, sticky=»nsew») # Using a method to switch frames self.show_frame(MainPage)

2: Создание метода для переключения фреймов

Теперь, когда мы создали __init__, а также указали, какие фреймы мы собираемся использовать, мы можем создать метод, который переключает просматриваемые фреймы.

Современные графические приложения на Python | Все фишки в одном видео


def show_frame(self, cont): frame = self.frames[cont] # raises the current frame to the top frame.tkraise()

Читайте также:
Как называется программа стопка книг

3: Создание нескольких классов для фреймов

Теперь давайте создадим разные классы, действующие как фреймы, которые переключаются с помощью метода show_frame().

class MainPage(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) label = tk.Label(self, text=»Main Page») label.pack(padx=10, pady=10) # We use the switch_window_button in order to call the show_frame() method as a lambda function switch_window_button = tk.Button( self, text=»Go to the Side Page», command=lambda: controller.show_frame(SidePage), ) switch_window_button.pack(side=»bottom», fill=tk.X) class SidePage(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) label = tk.Label(self, text=»This is the Side Page») label.pack(padx=10, pady=10) switch_window_button = tk.Button( self, text=»Go to the Completion Screen», command=lambda: controller.show_frame(CompletionScreen), ) switch_window_button.pack(side=»bottom», fill=tk.X) class CompletionScreen(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) label = tk.Label(self, text=»Completion Screen, we did it!») label.pack(padx=10, pady=10) switch_window_button = ttk.Button( self, text=»Return to menu», command=lambda: controller.show_frame(MainPage) ) switch_window_button.pack(side=»bottom», fill=tk.X)

Обратите внимание, эти классы добавляются к основному классу с помощью переменной self.frames.

Хранить команды для реализации классов мы будем в __name__==”main”, но их можно использовать и напрямую.

if __name__ == «__main__»: testObj = windows() testObj.mainloop()

Что дальше?

Итак, мы закончили с определением классов и методов и можем запустить этот скрипт.

Он должен предоставить вам крошечное окно, которое позволяет переключаться между фреймами одним нажатием кнопки.

На более высоком уровне вы даже можете создать функцию переключения между фреймами в строке меню в верхней части приложения.

Заключение

Работа с классами в модуле tkinter открывает много возможностей при создании новых приложений.

В этом мануале мы рассмотрели довольно большое количество кода, найти который можно также по этой ссылке.

Если же вы хотите посмотреть на живой пример, который реализует множество функций Tkinter, включая классы, и работает на SQLite3, посетите эту страницу.

Читайте также:
Адаптированная программа по физической культуре для детей с умственной отсталостью вариант 2

Источник: www.8host.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru