Python #10

Python #10
Photo by Feliphe Schiarolli / Unsplash

powtórka

import flet 
def main(page: flet.Page):
    pole_do_wprowadzenia = flet.TextField(label="Dodaj element")

    def dodaj(_e):
        if pole_do_wprowadzenia.value:
            wprowadzone = flet.Text(pole_do_wprowadzenia.value)
            page.add(wprowadzone)
            pole_do_wprowadzenia.value = ""
            page.update()
    
    
    przycisk = flet.FilledButton("Dodaj", on_click=dodaj)


    page.add(pole_do_wprowadzenia, przycisk)

flet.app(target=main)

# flet.ListView - dodawanie przez .controls.append()
# flet.Row
###usuwanie wierszy


import flet 
def main(page: flet.Page):
    pole_do_wprowadzenia = flet.TextField(label="Dodaj element")
    lista_elementow = flet.ListView()

    def dodaj(_e):
        if pole_do_wprowadzenia.value:

            def usun_wierz(_e):
                lista_elementow.controls.remove(wierz)
                page.update()
            wprowadzone = flet.Text(pole_do_wprowadzenia.value)
            przycik = flet.FilledButton("usun", on_click=usun_wierz)
            wierz = flet.Row([wprowadzone, przycik])
            lista_elementow.controls.append(wierz)
            pole_do_wprowadzenia.value = ""
            page.update()
    
    
    przycisk = flet.FilledButton("Dodaj", on_click=dodaj)


    page.add(pole_do_wprowadzenia, przycisk, lista_elementow)

flet.app(main)

# flet.ListView - dodawanie przez .controls.append()
# flet.Row
###działająca apka !!!!!!!!!

import flet
import qrcode
from io import BytesIO
import base64

def main(page: flet.Page):
    page.title = "Generator kodów QR"
    page.theme_mode = flet.ThemeMode.LIGHT
    page.padding = 10


    def utworz_qr_image(text_data: str) -> str:
        img = qrcode.make(text_data)
        buffer = BytesIO()
        img.save(buffer)
        qr_img_b64 = base64.b64encode(buffer.getvalue()).decode()
    # encode koduje znaki w buforze z pomocą base64
    # decode zamienienia dane binarne na tekst
        return qr_img_b64

    def wyswietl_qr(_e):
            if do_zakodowania.value:
                obrazek_jako_tekst = utworz_qr_image(do_zakodowania.value)
                obrazek.src_base64 = obrazek_jako_tekst
                page.add(obrazek)
                page.update()

    do_zakodowania = flet.TextField(
            width=400, text_align=flet.TextAlign.RIGHT, label="tekst do zakodowania qr"
        )
    generuj_przycisk = flet.FilledButton(text="generuj", on_click=wyswietl_qr)
    obrazek = flet.Image(src_base64="")

    page.add(do_zakodowania, generuj_przycisk)

flet.app(main)

Klasy obiektów

nie mylić klasy z obiektem

zadania

# stworz klase Gracz
# chciałbym żeby postać gracza miała
# - imie, str
# - profesja, str
# - hp (pkt zycia), int, wart domyślna 100
# - mana (pkt magii), int, wart domyślna 100

class PostacGracza:
    def __init__(self, imie:str, profesja:str, hp:int, mana:int):
        self.imie = imie
        self.profesja = profesja
        self.hp = hp
        self.mana = mana
gracz1 = PostacGracza("Michalina", "czarownica", 100, 100)
print(gracz1.hp, gracz1.mana)
gracz2 = PostacGracza("Fizban", "mag", 100, 200)
print(gracz2.hp, gracz2.mana)



# w klasie gracz dodajcie atrybut wytrzymalosc = 100 i dodaj metodę, która bedzie odejmowac graczowi punkty zycia

class PostacGracza:
    def __init__(self, imie:str, profesja:str, hp:100, mana:200, wytrzymalosc:300):
        self.imie = imie
        self.profesja = profesja
        self.hp = hp
        self.mana = mana
        self.wytrzymalosc = wytrzymalosc

    def zadaj_obrazenia(self, obrazenia: int):
        self.hp -= obrazenia

gracz1 = PostacGracza("Michalina", "czarownica", 100, 100, 300)
print(f"HP przed walką: {gracz1.hp}")
gracz1.zadaj_obrazenia(10)
print(f"gracz1. po walce: {gracz1.hp}")


# stworz klasę Zamowienie
# ma przechowywać nr stolika, listę potraw i informację czy zamówienie jest opłacone.
# Dodaj do niej metodę wyświetlającą zamówienie. (Bonus - rozważyć __str__ / __repr__)



# W książce kontaktowej korzystaliśmy ze słownika do przechowywanie kontaktów np.
# ksiazka_kontaktowa = {"Stefan" : "discord: stefox", "Ala": "2345678"}
# W osobnym projekcie (nie w pliku z książką) spróbuj stworzyć klasę dla pojedynczego kontaktu.
# Co w takiej sytuacji z zapisem do JSON-a?


class PostacGracza:
    def __init__(
        self,
        imie: str,
        hp: int = 100,
        mana: int = 100,
        wytrzymalosc = 100,        
    ):
        self.imie = imie
        self.hp = hp
        self.mana = mana
        self.wytrzymalosc = wytrzymalosc
    
    def zadaj_obrazenie(self, ilosc_obrazen: int):
        self.hp -= ilosc_obrazen
        if self.hp <=0:
            print("Gracz martwy!")
 
class Mag(PostacGracza):
    def __init__(
        self,
        imie: str,
        mana: int = 200,
    ):
        super().__init__(imie=imie, mana=mana)


class Wojownik(PostacGracza):
    def __init__(
        self,
        imie: str,
        wytrzymalosc: int = 200,
    ):
        super().__init__(imie=imie, wytrzymalosc=wytrzymalosc)


gracz1 = Mag("Fizban")
print(gracz1.imie, gracz1.hp, gracz1.mana)
print(type(gracz1)) 

gracz2 = Wojownik("Caramon")
print(gracz2.imie, gracz2.hp, gracz2.mana, gracz2.wytrzymalosc) 
print(type(gracz2))