Uživatelské nástroje

Nástroje pro tento web


turtle:klavesy

Zachytávání kláves

from turtle import Screen,Turtle
 
zelvicka = Turtle('triangle')
 
wn = Screen()
wn.setup(700, 700)
 
# Funkce pro obsluhu udalosti stisku klavesy
#  - zelvicka se zbarvi do cervena 
def obarviNaCerveno():
  zelvicka.color('red')
 
# - zelvicka se zbarvi na cerno  
def obarviNaCerno():
  zelvicka.color('black')
 
# Napojeni na stisk klavesy
wn.onkey(obarviNaCerveno,'Up')
wn.onkey(obarviNaCerno,'Down')
 
wn.listen()
 
# kresleni hvezdicky
for i in range(1,100):
  zelvicka.forward(200)
  zelvicka.left(261)

Navázaná je pouze událost keydown, neboli když jde klávesa dolů a když se operační systém rozhodne, že vám ji (stisknutou pošle).

Stisknutá klávesa

Pro většinu použití tedy potřebujeme evidenci která klávesa je stisknutá. Proto odchytáváme keydown - stisk a keyup - zvednutí. Mezi těmito událostmi považujeme klávesu za stisknutou.

Udržujeme si informaci (boolean - hodnota True nebo False) o tom, zda je právě klávesa stisklá, nebo ne. Zároveň zde používám Smyčku událostí

from turtle import Screen,Turtle
import time
 
wn = Screen()
wn.setup(700, 700)
 
player = Turtle('triangle')
stisknutaUp = False
 
def stisk_klavesyUp():
  global stisknutaUp 
  stisknutaUp = True
def uvolneni_klavesyUp():
  global stisknutaUp
  stisknutaUp = False
 
wn.onkeypress(stisk_klavesyUp, 'Up')
wn.onkeyrelease(uvolneni_klavesyUp, 'Up')
 
def pohyb():
  if stisknutaUp:
    player.forward(10)
 
wn.listen()
 
while True:
  pohyb()
  #nejaky dummy pohyb
  player.left(1)
  player.right(1)
turtle/klavesy.txt · Poslední úprava: 2023/02/08 23:35 autor: 127.0.0.1