Python #10
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))