Python zajęcia 9

Python zajęcia 9
Photo by Shahadat Rahman / Unsplash

Własne funkcje

Własną funkcję deklarujemy używając słowa def

def kwadrat(x:int) ->  int:
	wynik = x * x
	return wynik

Słowo return - wykorzystujemy je jeśli chcemy, żeby nasza funkcja poza wykonaniem jakiejś operacji zwróciła nam jakąś wartość (którą np. możemy przypisać do zmiennej). Bardzo dużo funkcji korzysta z tej opcji - np. funkcja sum zwraca nam sumę dwóch liczb, funkcja max zwraca nam największą wartość przechowywaną chociażby na liście itd.

Nie jest to jednak reguła - np. funkcja print wyświetla nam daną zawartość na ekranie, ale nie zwraca żadnej wartości.

def kwadrat(x:int) ->  int:
	wynik = x * x
	return wynik

liczba = kwadrat(2)
print(liczba)

Warto pamiętać:

  1. Informujemy jakiego typu parametrów oczekujemy
  2. Informujemy jaki typ danych funkcja zwróci

Jeśli funkcja nic nie zwraca możemy zapisać to tak:

def nic() -> None:
    promt("Ta funkcja nic nie zwraca"
def kwadrat(x:int | float) -> int | float:
    wynik = x * x
    retur wynik

| = OR

<< FLET

Flet to biblioteka bazująca na Flutterze. Umożliwia tworzenie aplikacji z graficznym interfejsem użytkownika na urządzenia stacjonarne i mobilne w Pythonie. Dostarcza gotowe komponenty umożliwiające budowanie graficznych interfejsów użytkownika.

import flet


def main(page: flet.Page):
    # Sekcja ogólnych ustawień okna aplikacji    

    page.title = "Tytul"  # np. tytulu okna

    # Sekcja deklaracji komponentów
    # - czyli opisujemy np. jakie pola tekstowe,
    # przyciski etc mają się znaleźć w oknie i jak 
    # mają one wyglądać.

    tekst = flet.Text("Jakiś tekst.") # np.tekst
    przycisk = flet.FilledButton("wciśnij mnie") # np. przycisk

    # Sekcja umieszczania komponentów w oknie
    # - czyli decydujemy jaki będzie ich układ,
    # w jakiej kolejności się będą wyświetlać,
    # gdzie zostaną umieszone
    page.add(
        tekst,
        przycisk,
    )


flet.app(main)

WAŻNE!!! Aplikację zbudowanej z framework-iem Flet lepiej uruchamiać przez flet run nazwapliku.py, a nie przez guzik "play" w VSCode czy python nazwapliku.py". Uruchomienie poprzez flet run` powoduje, że nie musicie cały czas zamykać i otwierać okna po zaktualizowaniu aplikacji - zmiany wczytają się automatycznie.

Najbardziej podstawowe komponenty to m.in.:

  • Text . Nieinteraktywny tekst wewnątrz okna
  • TextField. Pole do wprowadzania danych
  • FilledButton. Przycisk wypełniony kolorem, z zaokrąglonymi bokami.
import flet


def strona_glowna(page: flet.Page):

    # funkcja wykorzystywana w oknie, podpieta do przycisku
    def przywitaj(_event):
        if imie_pole.value:
            imie = imie_pole.value
            komunikat_tekst.value = f"Witaj {imie}!"
            komunikat_tekst.update()

    # sekcja ustawien okna
    page.title = "Hello!"

    # sekcja komponentów
    imie_pole = flet.TextField(
        label="Wprowadź imię:",
    )
    witaj_przycisk = flet.FilledButton(
        text=" przywitaj ",
        on_click=przywitaj,
        style=flet.ButtonStyle(padding=10),
    )
    komunikat_tekst = flet.Text("")

    # sekcja umieszczenia komponentów w oknie
    page.add(
        imie_pole,
        witaj_przycisk,
        komunikat_tekst,
    )


flet.app(strona_glowna)

Warto zwrócić uwage na sposób podpięcia funkcji "przywitaj" do przycisku "witaj_przycisk" - czyli wciśnięcie przycisku spowoduje uruchomienie funkcji.

Wymaga to dodania "wyzwalacza" do przycisku - w tym wypadku "on_click" (gdyż chcemy aby funkcja była uruchamiana po wciśnięciu przycisku, są też inne wyzwalacze np. hover). Ponieważ chcemy żeby to Flet obsłużył uruchomienie funkcji to należy zwrócić uwagę, że po podaniu nazwy funkcji (w powyższym przykładzie przywitaj) NIE ma nawiasów okrągłych.

Drugą ciekawą rzeczą jest "tajemniczy" parametr _event dodawany do funkcji uruchaminej przez przycisk. Nazwę _event można zmienić, ale należy pamiętać, że musi się on pojawić jako pierwszy parametr funkcji wyzwalanej przez jakiś komponent graficzny aplikacji (przycisk etc).