Udalosti. Ovládacie prvky (tlačítko, vstupné pole, návestie)

Používateľské rozhranie v grafickom režime vyžaduje niekoľko objektov, pomocou ktorých môže používateľ program ovládať. Najpoužívanejšie sú:

  • tlačítko (Button)
  • vstupné pole (Entry)
  • návestie (Label)

Ich konkrétne použitie si ukážeme pri programovaní matematickej hry Taxman.

Taxman

Pravidlá hry:

  1. Hráč zvolí číslo n z rozsahu  od 10 do 300.
  2. Na obrazovku sa vypíše zoznam čísel v hre.
  3. Hráč si z tohto zoznamu zvolí číslo, ktoré má v zozname aspoň jedného deliteľa.
  4. Počítač vezme všetky delitele čísla vybraného hráčom.
  5. Ak v zozname čísel je číslo, ktoré má v zozname deliteľa, opakujú sa kroky 2 až 4
  6. Ak v zozname už nie je číslo, ktoré má v zozname deliteľa, zostávajúce čísla vezme počítač.
  7. Vyhráva hráč, ktorého súčet čísel je väčší.

Ukážka hry:

Hráč zvolil číslo 10. Vypíšu sa čísla: 1 2 3 4 5 6 7 8 9 10

Hráč vezme číslo 3. Počítač si vezme číslo 1. Vypíšu sa čísla: 2 4 5 6 7 8 9 10. Stav je: 3:1

Hráč vezme číslo 6. Počítač vezme číslo 2. Vypíšu sa čísla: 4 5  7 8 9 10. Stav je:  9:3

Hráč vezme číslo 8. Počítač vezme číslo 4. Vypíšu sa čísla: 5  7  9 10. Stav je:  17:7

Hráč vezme číslo 10. Počítač vezme číslo 5. Vypíšu sa čísla: 7  9 . Stav je:  27:7

Tieto čísla už nemajú deliteľa, vezme ich počítač. Výsledný stav je: 27:31. Vyhral počítač.

Vytvorenie programu

Krok 1: Voľba rozsahu čísel.  Vytvorenie zoznamu čísel.

Vytvoríme plátno, na ktoré sa bude vypisovať skóre, zoznam čísel a kam sa umiestnia ovládacie prvky:

import tkinter
platno = tkinter.Canvas(width=1000,height=600,bg="skyblue")
platno.pack()

Potrebujeme ovládací prvok, cez ktorý zadáme číslo n.  Takýmto prvkom je vstupné pole (Entry). Príkaz má v najjednoduchšom prípade tvar:

e=tkinter.Entry()

Môže mať okrem iných nasledujúce parametre:

  • prvý parameter okno  v ktorom sa má vstupné pole zobraziť
  • width – aká je šírka vstupného poľa
  • font – typ a druh fontu
  • command – príkaz, ktorý sa má vykonať, ak používateľ zmení vstupnú hodnotu

Na načítanie hodnoty zadanej v Entry slúži metóda e.get(). Príkaz Entry nemá text, ktorý by používateľa navigoval, čo sa doň má vložiť. Na inštruktáž používateľa slúži prvok Návestie (Label). Label vlastne nie je ovládacím prvkom, kliknutím naň sa nič nevykoná, slúži len na oznamy používateľovi.

Príkaz Label má tvar:

l=tkinter.Label(text=’xyz‘)

Ďalšie atribúty sú:

  • font
  • fill
  • a iné

Keď sme do vstupného poľa čosi vložili, programu povieme aby vstupnú hodnotu spracoval, pomocou ovládacieho prvku Tlačítko (Button).

Príkaz Button má základný tvar:

b=tkinter.Button(text=’xyy‘,command=príkaz)

  • text  – aký text sa má na tlačítku vypísať
  • command – aký príkaz sa má vykonať, keď klikneme na tlačítko.
  • font – druh fontu
  • bg – farba tlačítka
  • a iné

Vytvorenie počiatočného stavu urobme vo funkcii init:

def init():
  global skore,cisla,e1
  skore=[0,0]
  cisla=[]
  n=int(e1.get()) 
  for i in range(1,n+1): 
      cisla.append(i)
  zobraz()
  • skore – stav hry, prvá hodnota je skóre hráča, druhá skóre počítača
  • cisla – zoznam čísel v hre
  • e1 – vstupné pole
  • n – rozsah čísel
  • cisla – zoznam čísel, ktoré sú v hre
  • append – metóda, ktorou sa pridá nový prvok na koniec zoznamu.
  • zobraz – funkcia, ktorou zobrazíme stav hry a aktuálny zoznam čísel

 

 

Ak chceme vložiť nejakú preddefinovanú hodnotu do Entry, použijeme metódu e.insert(0,hodnota)

Aby použivateľ vedel čo má do Entry vložiť, použijeme príkaz Label. Je to návestie, ktoré nič nevykonáva,  iba vypíše text, ktorý inštruuje používateľa.

Okrem hrúbky okraja môžeme nastaviť pomocou Entry napríklad počet vrcholov pravidelného mnohouholníka. Podobne môžeme nastaviť aj farbu, ale lepšie bude farbu nastavovať či už pomocou palety alebo farebných tlačidiel.

print

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *