Рубрики
Без рубрики

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

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

Автор оригинала: Pankaj Kumar.

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

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

Есть много скрытых функций в Tkinter И одним из них является метод использования классов в модуле.

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

Там нет необходимости устанавливать любой модуль, как Tkinter Модуль является частью стандартной библиотеки Python.

Однако эта статья будет иметь дело с слегка продвинутой формой Tkinter Модуль, так, рекомендуется пройти через серию начинающих.

Поэтому до того, как вы двигаетесь вперед, не забудьте прочитать по основным учебным пособиям на Tkinter здесь:

  • Часть Tkinter – 1
  • Часть Tkinter – 2
  • Часть TKinter – 3

Если вы закончите с базовыми учебниками, давайте перейдем к работе с Tkinter модуль.

Для того, чтобы Работа с классами нам нужно импортировать Tkinter модуль.

# Importing the tkinter module
import tkinter as tk

# Used for styling the GUI
from tkinter import tkk

Мы также импортируем ТТК Пакет отдельно для простоты использования.

Работа с занятиями в Tkinter

Давайте понять, как работать с занятиями в Tkinter. Способ применения работает довольно просты.

Сначала мы создаем Корневое окно , на вершине которой мы размещаем Одноместный кадр Отказ

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

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

Рамы, с которыми мы будем работать Главная страница , Боковая страница и Завершение экрана Отказ

Метод, который мы будем использовать для переключения между ними, является 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__ И также указывали кадры, которые мы собираемся использовать, мы можем создать метод, который переключает кадр, который мы просматриваем

    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 __ == «Основное» Но вы можете использовать его непосредственно.

if __name__ == "__main__":
    testObj = windows()
    testObj.mainloop()

Движение вперед

Теперь мы сделаем с определением классов и методов и могут запустить этот скрипт.

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

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

Заключение

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

Мы работали довольно много кода сегодня, и просто мы на одной странице, вот Гист !

Если вы хотите посмотреть на живой пример, проверьте мой проект Билеты из Эйзена , который реализует много функций TKINT, включая классы, и работает с использованием SQLite3 Отказ

Рекомендации