№1 Практическая онлайн-школа обучения языкам программирования Python (Django), JavaScript, Kotlin В. Бовсуновского.

Специальная, подарочная акция получения доступа к 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-старт