Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Detektovanje pritisnutih tastera strelice iz programa, kako?

[es] :: Python :: Detektovanje pritisnutih tastera strelice iz programa, kako?

[ Pregleda: 7732 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pisac

Član broj: 13046
Poruke: 4504



+3227 Profil

icon Detektovanje pritisnutih tastera strelice iz programa, kako?01.11.2015. u 23:01 - pre 68 meseci
Pokušavam da napravim program koji detektuje da li je pritisnuta neka od strelica, i ako jeste odradi neku funkciju pa nastavlja sa svojim poslom. Međutim, ne uspevam.

screen.getch() ne radi posao jer je program smrznut dok se ne pritisne neki taster
sys.stdin.read(1) sam pomislio da radi, ali sam utvrdio da isto čeka dok se ne pritisne neki taster. A i njega uspevam da koristim samo dok testiram regularne tastere, ali strelice ne znam kako da detektujem.

Ovo recimo detektuje tastere na numeričkoj tastaturi, ali naravno samo dok je aktivan num-lock:
Code (python):

        k = sys.stdin.read(1)
        if k=='4':
                print "num levo"
        elif k=='6':
                print "num desno"
        elif k=='8':
                print "num gore"
        elif k=='2':
                print "num dole"
 


Kako testirati prave tastere sa strelicama, i to tako da se program ne zaustavi ako nijedan taster nije pritisnut?

[Ovu poruku je menjao pisac dana 02.11.2015. u 00:30 GMT+1]
Tylko jedno w głowie mam
Koksu pięć gram
Odlecieć sam
W krainę zapomnienia
 
Odgovor na temu

pisac

Član broj: 13046
Poruke: 4504



+3227 Profil

icon Re: Detektovanje pritisnutih tastera strelice iz programa, kako?02.11.2015. u 00:46 - pre 68 meseci
Curses, odnosno screen.getch(), je ipak bio rešenje, ne baš udobno ali kakvo-takvo.

tačnije curses.cbreak, ekran.keypad, ekran.nodelay

Code (python):

import curses
screen = curses.initscr()       # get the curses screen window
curses.noecho()                 # turn off input echoing
curses.cbreak()                 # respond to keys immediately (don't wait for enter)
screen.keypad(True)             # map arrow keys to special values
screen.nodelay(True)            # da ne čeka na taster ako nije pritisnut

def kontrola2():
    global Smer,Pauza
    key = screen.getch()
    while key != -1:
        if key == curses.KEY_LEFT: Smer -= 1
        if key == curses.KEY_RIGHT: Smer += 1
...
 


Naučio sam otprilike i kako da štampam u prvoj liniji ekrana (pošto print ne radi kako treba kada je aktivan curses), a još samo kad bi mi neko objasnio kako da ekran ostane u normalnom a ne drogiranom stanju kada iz programa izađem sa CTRL+C, i biću zadovoljan za danas (prvi dan učenja Pajtona na Malini)
Tylko jedno w głowie mam
Koksu pięć gram
Odlecieć sam
W krainę zapomnienia
 
Odgovor na temu

[es] :: Python :: Detektovanje pritisnutih tastera strelice iz programa, kako?

[ Pregleda: 7732 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.