Ťahák príkazov

Ťahák k písomkám

Veľmi dôležité! Python je CASE-SENSITIVE! Je rozdiel medzi veľkými a malými písmenami (napr. b a B).

Texty vždy píšeme v úvodzovkách. Buď „text“ alebo ‘text’ → nikdy nie kombinácia dvojitá text jednoitá úvodzovka, musia byť rovnaké.

Načítanie grafiky:

import tkinter 
c = tkinter.Canvas() 
# alebo c = tkinter.Canvas(bg='white', width=1000, height=600) #bg je farba pozadia, šírka, výška
c.pack()
Plátno Canvas – práca so súradnicami

Základné grafické príkazy:

 c.create_line(x1,y1,x2,y2,x3,y3,...)
 nakreslí čiaru idúcu z bodu so súradnicami [x1,y1], do bodu [x2,y2], ďalej do bodu [x3,y3], prípadne ďalej do ďalších bodov
 c.create_line(x1,y1,x2,y2,width=5,fill='red')
 toto nastaví hrúbku čiary na 5 a jej farbu na červenú. Okrem základných môžete použiť aj nasledujúce farby: ‘orange’, ‘fuchsia’, ‘olive’, ‘skyblue’, a pod.
 c.create_rectangle(x1,y1,x2,y2)
# fill='red', outline='red'
 nakreslí obdĺžnik, ktorý bude mať ľavý horný roh v bode so súradnicami [x1,y1] a pravý dolný roh v bode so súradnicami [x2,y2]
 c.create_rectangle(x1,y1,x2,y2,outline='blue')
# fill='red', outline='red'
 outline nastaví farbu čiary na modrú
 c.create_oval(x1,y1,x2,y2)
# fill='red', outline='red'
 nakreslí elipsu, ktorá bude vpísaná do obdĺžnika (preto vieme určiť x1,y1,x2,y2) s ľavým horným rohom v bode so súradnicami [x1,y1] a pravým dolným rohom v bode so súradnicami [x2,y2]
 c.create_polygon(x1,y1,x2,y2,x3,y3)
# fill='red', outline='red'
 nakreslí polygón, ktorý môže byť aj vyfarbený (napríklad na kreslenie trojuholníka, 5,6,7,8,9-uholníka… vždy treba zadať pre každý bod aj x aj y)
 c.create_text(x,y,text='toto sa vypíše',
font='Arial 70 bold',angle=90)
# fill='red'
 vypíše text „toto sa vypíše“ na súradnici x,y (x,y sú presné súradnice stredu textu), parameter „font“ môže, no nemusí byť zadaný, parametrom „angle“ otočíme napísaný text o príslušný uhol (tiež to nie je povinný parameter)
 c.delete("all")
zmazanie grafickej plochy (používa sa často práve vtedy, ak robíme s c.after(100) – c.update() )

Ako môžeme zadávať súradnice:

Ako môžete pracovať so súradnicami
1. Ako súradnice si určíme ľavý horný (x1,y1) a pravý dolný roh (x2, y2)
    c.create_rectangle(x1,y1,x2,y2)
2. Ako súradnice si určíme ľavý dolný roh (x1, y1) a pravý horný roh (x2, y2)
    c.create_rectangle(x1,y1,x2,y2)
3. Na začiatku si určíme súradnice stredu štvorca x,y a polomer (polovicu strany štvorca).
   Potom vykresľujeme tak, že zdáme ľavý horný roh, ktorý bude mať súradnice (x-v, y-v)
   a pravý dolný roh, ktorý bude mať súradnice (x+v, y+v)
     x = 200 (napr.)
     y = 200 (napr.)
     v = 50 (napr.)
     c.create_rectangle(x-v,y-v,x+v,y+v)

Ako zapisujeme FOR cyklus v pythone? Je na to viac rôznych spôsobov:

for i in range(5,10): #čísla od 5 do 9 
 print(i, end=' ')

for i in 1,2,3:
 print(i)

for i in 2,3,5,11: 
 print(i**2) 

for i in range(2,100,2): #čísla od 2 do 99 ale iba párne
 print(i, end=' ')

for i in "AHOJ":
 print(i, end=' ') 

for i in "a","b","c","d":
 print(i)

for i in premenna: #premenna ak je to string, ak je to číslo tak range(premenna) v tvare intervalu
 print(i)

- veľmi dôležité: príkazy, ktoré sa majú vykonať vrámci for cyklu, musia byť ďalej od okraja
- oddelenie od okraja buď automatiky, ak je správne zapísaná hlavička for cyklu
- na stlačenie TAB (tabulátora)
- alebo na 4 údery medzerníkom

Načítanie náhodných čísiel – 2 spôsoby:

1.spôsob:

import random
 - vždy pred použitím musíme importovať knižnicu na náhodu

a = random.randrange(10)
 - môže mať 1 alebo 2 vstupy - toto vypľuje náhodné číslo v rozmedzí 0-9
 - random.randrange(10,20) - toto vypľuje náhodné číslo v rozmedzí 10-19

b = ramdom.randint(10,20)
 - musí mať 2 vstupy - toto vypľuje náhodné číslo v rozmedzí 10-20

farba = random.choice(('red', 'green', 'blue', 'black'))
 - náhodná farba - vyberie si zo 4 možností
 - dá sa aplikovať aj na niečo iné, náhoda si vyberie jedno z uvedených možností oddelených čiarkou

2.spôsob:

from random import *

a = randrange(10, 20) #nepíšeme random.randrange, ale iba príkaz bez toho, aj pri ostatných typoch
b = randint(10,20)

# príkazy fungujú rovnako v oboch prípadoch ale vždy si musíme vybrať, ktorý spôsob použijeme
Náhodné farby z celej palety:
def rgb(r, g, b):
  return '#{:02x}{:02x}{:02x}'.format(r, g, b)
farba = rgb(random.randrange(256),random.randrange(256),random.randrange(256))
#pozor, toto je keď máme import random. ak máme from import random *, potom nedávame
# random.randrange() ale iba randrange()

Postupné vykresľovanie objektov – jednoduchý časovač – používaný vo for cykle:

c.after(1000)           #v zátvorke je počet milisekúnd
c.update()

Nekonečný časovač ale len do chvíle, kým ho nestopneme podmienkou – zložitejší časovač – používaný vo funkciách:

def nazovfunkcie()
    prikazy
    #pripadne aj podmienka, kedy má iba fungovať časovač
    c.after(100, nazovfunkcie)           #v zátvorke je počet milisekúnd a funkcia, v ktorej sa nachádza, update tam môže a nemusí byť

nazovfunkcie()

Premenné:

nazov = hodnota      #priradenie

Zvyšovanie hodnoty premennej o hodnotu napr. 10: 
a = 32
a = a + 10         #aká bude teraz hodnota premennej? a=32+10 → a bude mať hodnotu 42

Znižovanie hodnoty premennej o hodnotu napr. 10:
a = 32
a = a - 10         #aká bude teraz hodnota premennej? a=32-10 → a bude mať hodnotu 22

Textové premenné:
a = "slovo"

Globálne premenné:

a = 10
b = "Ahoj"

def nazovfunkcie():
    global a
    global b
    # alebo spolu zapísať:  global a, b

# premenné a b môžu byť definované aj tu
nazovfunkcie()

Komentovanie:

# - znak na zakomentovanie
## - alebo dva heštegy

SK klávesnica:
ALT - SHIFT (oba ľavé) - 3 (hore, tam kde sú písmená s diakritikou)

Anglická klávesnica:
SHIFT (ľavý) - 3 (hore, tam kde sú písmená s diakritikou)

Pre obe klávesnice:
- ak označím celý blok textu a potom stlačím zakomentovávanie, tak mi zakomentuje celú časť naraz dvoma ##
- ak označíte zakomentovaný text a stlačíte namiesto 3 číslo 4 (hore), tak vám odkomentuje celý blok kódu

Získavanie vstupu od používateľa v Shelli:

vstup = input("Zadaj text: ")      #ak pýtame texty - stringy
vstup = int(input("Zadaj číslo: "))  #ak vieme, že chceme od používateľ celé číslo
#vstup si treba uložiť do nejakej premennej

Vypísanie textu do Shellu:

print("Ahoj")      #vypísanie textu do Shellu - stringov
print(str(135))    #vypísanie čísla do Shellu (musíme pretypovať z čísla na string)
print(textovapremenna)   #môžeme vypísať aj text, ktorý máme v premennej
print(str(ciselnapremenna))   #ak chceme vypísať číslo, ktoré je v premennej

Pretypovanie premennej:

int(textovapremenna)     #pretypovanie textovej premennej na číslo, iba ak tam máme uložené texty, ktoré sú vlastne čísla v úvodzovkách "1" → 1
str(ciselnapremenna)     #pretypovanie celočíslenej premennej na text 1 → "1"

Podprogramy/Funkcie/Procedúry:

#bez parametrov
def nazov():
    prikazy

nazov()

#s parametrami, môže tam byť jeden aj viac)
def nazov(parameter1, parameter2, parameter3):
    prikazy

nazov(hodnota1, hodnota2, hodnota3)

Podmienky:

 if podmienka:
    prikazy
 else:
    prikazy

#zložitejšia podmienka

if podmienka:
    prikazy
elif inapodmienka:
    prikazy
else:
    prikazy

#podmienka v matematickom zápise: <, >, <=, >=, == (rovná sa), != (nerovná sa), not
#dve podmienky spojené: and (a zároveň), or (alebo)

Udalosti myši:

def nazovfunkcie(event):
    x = event.x #uloženie miesta kliknutia, to kde máme kurzor, x-ová súradnica kliku
    y = event.y #uloženie miesta kliknutia, to kde máme kurzor, y-ová súradnica kliku
    prikazy

c.bind("<Button-1>", nazovfunkcie)

# 1 - ľavé, 2 - stredné, 3 - pravé tlačidlo
# "<Button-1>" - klikanie (ľavým tlačidlom)
# "<B1-Motion>" - ťahanie (zakliknutého ľavého tlačidla)

Udalosti klávesnice:

def nazovfunkcie(event): 
    prikazy

c.bind_all("a", nazovfunkcie)     # "A" kláves na klávesnici

def vypis(event):
   x = randrange(300)
   y = randrange(300)
   c.create_text(x,y,text=event.keysym)  #vypíše to, na ktorý kláves sme klikli

c.bind_all('<Key>', vypis)   # hociktorý kláves na klávesnici

Posúvanie objektov canvasu klávesom:

x = 0
y = 0
c.create_oval(x, y, x+10, y+10, fill='red',tags='nazov')

def vlavo(event):
     global x, y
     c.move('nazov',10,0) #posun o počet krokov doprava/doľava, posun o počet krokov hore/hole
     x = x + 10

c.bind_all(', vlavo')

Posúvanie objektov canvasu v časovači

x = 0
y = 0
c.create_oval(x, y, x+10, y+10, fill='red',tags='nazov')

def padadole():
     global x, y
     c.move('nazov',0,10) #posun o počet krokov doprava/doľava, posun o počet krokov hore/hole
     y = y + 10
     c.after(100, padadole)

padadole()

Entry a tlačidlo

def button1_klik(): #funkcia, ktorá sa viaže ku tlačidlu
    prikazy
    hodnota = entry1.get() #získanie hodnoty z entryboxu

#button, tlačidlo na ploche - musíte udať oba riadky!:
button1 = tkinter.Button(text='text na buttone', command=button1_klik) #čo bude na tlačidle napísané a s ktorou funkciou je prepojené
button1.pack() #zmena umiestnenia button1.pack(side = "bottom") -> strany: left, right, bottom, top

#vstupné pole/entry box na ploche, povinné sú iba prvé dva riadky:
entry1 = tkinter.Entry() #vytvorenie entryboxu
entry1.pack() #zmena umiestnenia: entry1.pack(side = 'left')
entry1.insert(0,'text') #toto je poznámka, ktorá sa bude zobrazovať v entryboxe, nepovinný príkaz, vôbec tam nemusí byť

 

Facebook komentáre