Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
bolejt

Založen: 02. 05. 2009 Příspěvky: 45
|
Zaslal: 24. říjen 2009, 00:37:24 Předmět: název klávesy při události |
|
|
mám aplikaci v c++, která odchytává události operačního systému a při stisku klávesy chce upozornit objekt v pythonu. zde se nachází můj problém: jak mu rozumně předat název klávesy?
dejme tomu právě vymyšlený kód v pythonu:
kód: |
class Dude(KeyListener):
def keyDown(self,key):
# s čím bych to měl porovnávat?
if (key == ???):
self.doSomething() |
co jsem zatím vymyslel:
1) napadlo mě zasílat název klávesy jako string, v C++ kódu bych měl velké pole stringů, ke kterým by šlo přistupovat tímto způsobem :
kód: |
string[] keyNames = {
// hromada stringů vytahaných z keycodes používaného API (jmenovitě SDL) pomoci nějakého skriptu
// stringy například: "K","A", "Esc", "Up", "Down", "Left Shift"
};
// key code by sloužil jako index v poli keyNames
string currentKeyName = keyNames[keyCode]; |
kód: |
class Object(KeyListener):
def keyDown(self,key):
if (key == "Up"):
self.doSomething() |
2) další nápad je podstrčit pythonu "konstanty" (ve skutečnosti proměnné, konstanty v pythonu nejsou):
kód: |
# modul Keys, proměnné vytvořené v c++ aplikaci a strčené do pythoního modulu
keyModule["KEY_ESC"] = KEY_CODE_ESC;
keyModule["KEY_UP"] = KEY_CODE_UP;
keyModule["KEY_K"] = KEY_CODE_K;
|
kód: |
# samotný objekt
import Keys
class Object(KeyListener):
def keyDown(self,key):
if (key == Keys.KEY_UP):
self.doSomething()[ |
sám se přikláním k té první variantě, ale stále si říkám, jestli je to to správné řešení... _________________ Ball ball8; |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 24. říjen 2009, 10:08:34 Předmět: |
|
|
Já bych se přiklonil spíš k té druhé, je to čistší a koneckonců dělá to tak imho většina programů, třeba wxWidgets. _________________ Mám strach |
|
Návrat nahoru |
|
 |
bolejt

Založen: 02. 05. 2009 Příspěvky: 45
|
Zaslal: 24. říjen 2009, 20:43:30 Předmět: |
|
|
ano, máš pravdu, před chvílí mi došlo, že první varianta krom tebou popsaných důvodů není vhodná už třeba kvůli:
kód: |
keyState.isKeyPressed("Up")
// -> tj. zbytečně musím implementovat nalezení klávesy |
ve druhé variantě bude v nějakém modulu kláves nalezena hodnota VK_UP, ale to už bude záležitost pythonu a jeho svižného dictionary.
děkuji za nesouhlas, zbytečně bych ztrácel čas  _________________ Ball ball8; |
|
Návrat nahoru |
|
 |
|
|
Nemůžete odesílat nové téma do tohoto fóra Nemůžete odpovídat na témata v tomto fóru Nemůžete upravovat své příspěvky v tomto fóru Nemůžete mazat své příspěvky v tomto fóru Nemůžete hlasovat v tomto fóru
|
Powered by phpBB © 2001, 2005 phpBB Group
Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna