Специальная, подарочная акция получения доступа к Django4!
Как, я, начал код писать в Python? Смотрите, если уперлись и ничего не получается.
6. Продолжаем toga. Разберёмся с функциями обратного вызова более широко.
Когда мы используем в Toga к калбэк(функцию обратного вызова).
Там понятно метод on_press принимает другой метод и выполняет, при нажатии этот другой метод.
НО калбэки намного сложнее и для начала дам вам тренировку.
«фишка» калбэка в том, что он может использовать как аргументы функции, все те функции, и их значения, которые инициализированы в программе.
# # app.py # -*- coding: utf-8 -*- """ My first application """ import toga from toga.style import Pack from toga.style.pack import COLUMN, ROW class TogaStart(toga.App): def ura(self, widget): """ info_dialog(title, message) """ self.main_window.info_dialog( "Привет дружище!", "Рады тебя видеть {}".format(self.name_input.value) ) def startup(self): """ Construct and show the Toga application. Usually, you would add your application to a main content box. We then create a main window (with a name matching the app), and show the main window. """ main_box = toga.Box(style=Pack(direction=COLUMN)) label = toga.Label( text ="Ваше имя: ", id = "lb1", style=Pack(padding=(0, 5)) ) self.name_input = toga.TextInput(style=Pack(flex=1)) name_box = toga.Box(style=Pack(direction=ROW, padding=5)) name_box.add(label) name_box.add(self.name_input) btn = toga.Button( "Нажми меня", # Метод, асинхронную программу, генератор. on_press=self.ura, style=Pack(padding=5)) main_box.add(name_box) main_box.add(btn) self.main_window = toga.MainWindow(title=self.name) self.main_window.content = main_box self.main_window.show() def main(): return TogaStart()
# # clb1.py """j Процитировать PEP-8 : _single_leading_underscore: слабый индикатор "internal use". E.g. from M import * не импортирует объекты, имя которых начинается с символа подчеркивания. """ """ def clb_on_press(): print("вернуть функцию, которая вызывается при нажатии") def table_main(): print("показать таблицу") clb_on_press = table_main() """ def clb_on_press(param1): print("вернуть функцию, которая вызывается при нажатии") param1() def table_main(): print("показать таблицу") clb_on_press(table_main)
# # clb2.py """ Можно выбирать события Зашли в комнтату Щёлкнули выключатель включился свет """ def callback_room(room, decidet, completed): print("Вошли в {}".format(room)) decidet() print("И опа!") completed() def action(): print("Щелкнули выключатель") def action2(): print("Вставили вилку в разетку") def completed(): print("включился свет") def completed2(): print("заработал пылесос") callback_room("Зал", action, completed) print("******новый кэлбек--*****") callback_room("Спальня", action2, completed2)
# # clb3.py """"j мы смешиваем два цвета и получаем третий """ def fun_color(color1, color2): """ смешиваете два цвета color1(str) color2(str) """ print("смешаем: ") return color1 + color2 def result_color_clb(colorresult, color1, color2): return colorresult(color1, color2) mix = result_color_clb(fun_color, "крансый ", "зелёный" ) print(mix) def clb_color_result(*result): print("получился Коричневый") result = clb_color_result(result_color_clb, "красный", "зелёный" ) print(result)
Домашнее задание написать свои калбеки и сбросить сюда в эту группу. Придумайте несколько событий и сделайте выборку.
https://groups.google.com/g/spb-tut/c/u_oU566e140/m/FDSPsdQOAgAJ
Вcе записи подраздела.
Сейчас вы проходите урок: 6. Продолжаем toga. Разберёмся с функциями обратного вызова более широко.
<< Назад | Далее >>
Все уроки с тегом: toga-старт