diff --git a/part1_basic/lesson10/README.md b/part1_basic/lesson10/README.md new file mode 100644 index 0000000..4f0a7d1 --- /dev/null +++ b/part1_basic/lesson10/README.md @@ -0,0 +1,66 @@ +Задание: + + +Написать приложение пайтон, используя библиотеку Tkinter, которое будет выводить одно из рандомных определений из пайтона. К примеру (While - это ... ) и т.д. Сделайте дизайн приложения (к примеру- сделайте заголовок внутри окна). Измените цвет окна. + +Давайте разберем его по шагам: + + +Импорт библиотек. + +В этом блоке импортируются библиотеки. tkinter используется для создания GUI-приложения, а random используется для выбора случайных определений. + + +Определения Python: + +definitions = { + + "While": "Цикл 'while' используется для выполнения блока кода, пока условие истинно.", + + "For": "Цикл 'for' используется для итерации по элементам последовательности (например, списку или строке).", + + "If": "Условие 'if' позволяет выполнить определенный блок кода, если условие истинно.", + + "Function": "Функция - это блок кода, который можно вызывать с определенными аргументами.", + + "List": "Список - это упорядоченная коллекция элементов, которая может содержать разные типы данных." + +} + + +Функция show_random_definition(): + +Эта функция выбирает случайный ключ из словаря definitions, затем очищает текстовое поле definition_text и вставляет в него выбранное определение. + + +Создание главного окна: + +Этот блок создает главное окно приложения с заголовком "Определения Python". + + +Изменим цвет фона окна на бирюзовый + +root.configure(bg="#00FFFF") + + +Создание заголовка. + +Title label - в котором указывает заголовок окна. + + +Создание текстового поля для определений: + +Это текстовое поле, в котором будут отображаться определения. + + +Создание кнопки "Показать определение": + +Создается кнопка с названием "Показать определение", и ей назначается функция show_random_definition() для выполнения при нажатии на кнопку. + + +Запуск главного цикла приложения: + +Этот код запускает главный цикл приложения, который ожидает взаимодействия пользователя с GUI. + + +Когда пользователь нажимает кнопку "Показать определение", случайное определение из словаря definitions отображается в текстовом поле при помощи функции show_random_definition(). diff --git a/part1_basic/lesson10/app.py b/part1_basic/lesson10/app.py new file mode 100644 index 0000000..e2c059e --- /dev/null +++ b/part1_basic/lesson10/app.py @@ -0,0 +1,65 @@ +""" +Модуль является результатом выполнения практической +домашней работы по теме "tkinter num2" + +:copyright: Сергей Ванюшкин +:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git +:license: MIT +2023г. +""" + +from tkinter import * + + +class PyZen: + def __init__(self): + self.__root = Tk() + self.__root.title = "Определения Python" + self.__root.configure(bg="#00FFFF") + self.gen_zen() + + self.label = Label(self.__root, text="Дзен Python") + self.text = Text(self.__root, wrap=WORD) + self.set_text() + + self.btn_get = Button( + self.__root, text="Получить мудрость старейшин", command=self.get_shit + ) + self.btn_exit = Button(self.__root, text="Выйти", command=self.exit) + + self.label.pack(padx=20, pady=20) + self.text.pack(padx=20, pady=20) + self.btn_get.pack() + self.btn_exit.pack() + mainloop() + + def gen_zen(self): + import contextlib + import io + + with contextlib.redirect_stdout(echo := io.StringIO()): + import this + + self.zen = (echo.getvalue()).split("\n") + + def set_text(self, text=None): + self.text.delete("1.0", END) + if text is None: + self.text.insert("1.0", "Познаватель Дзена\n") + self.text.insert("2.0", "Нажмите кнопку и получите мудрость") + else: + self.text.insert("1.0", "Мудрость дня:\n") + self.text.insert("2.0", "\n") + self.text.insert("3.0", text + "\n\n") + self.text.insert("5.0", "\u00a9" + self.zen[0]) + + def get_shit(self): + import random + + self.set_text(random.choice(self.zen[2:-1])) + + def exit(self): + self.__root.destroy() + + +app = PyZen()