Und nochmal Hotkeys

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Sehr geehrtes Python-Forum!
Ich möchte für ein Programm Keys abfragen.
Ich habe das in diesem Forum schon gesucht und bin zu folgendem Script gekommen:

Code: Alles auswählen

import msvcrt
import thread
def SetHotKey(key,func,funcargs=None,CommandPrompt=False):
    
    otherkeys={"{LEFT}":"ÓK"}
    
    if key in otherkeys.keys():
	    key=otherkeys[key]
	    print "test",key
	    
    def keylogger(taste,func,funcargs=None):
        while 1:
            x=msvcrt.getch()
            if x==taste:
                if funcargs:
                    func (funcargs)
                else:
                    func()
                    
    if CommandPrompt:
        keylogger(key,func,funcargs)
    else:
        thread.start_new_thread(keylogger,(key,func,funcargs))
das otherkeys dict kommt daher, dass, wenn man bestimmte Tasten bei diesem Script:

Code: Alles auswählen

def keylogger():
    while 1:
        x=msvcrt.getch()
        print "gedrückt:",x
drückt dieses herauskommt (ich habe NUR die up taste gedrückt):

Code: Alles auswählen

gedr³ckt: Ó
gedr³ckt: H
Wie kann ich verhindern, dass das da ^ passiert und wenn man eingibt

Code: Alles auswählen

>>> def hello(x):
    print "gedrückt",x
>>> SetHotKey("{LEFT}",hello,("left"),True)
#hier würde man dann left drücken
gedrückt left
Ich freue mich auch Antworten!
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

HÄ? wtf
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

INFACT hat geschrieben:Leute mit einenr minimalen Immunität gegen Aluminium leiden an einer Aluminiumminimumimmunität.
Bild
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Habs in 1,4 Sek geschafft, fehlerfrei!
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Wow, ich nicht, sonst würde ich nicht Fragen...
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

"Hä?" und "wtf" deuten meist auf Unverständnis hin...
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

welche python version benutzt du und welches OS
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Dauerbaustelle hat geschrieben:"Hä?" und "wtf" deuten meist auf Unverständnis hin...
Hä? wtf, ich denk du hast es in 1.4 sekunden geschafft?
Sieht mir eher nach 39 minuten aus, wenn ich mir die Zeit zwischen deinen Posts anschaue...("Hä? wtf" und "Habs in 1,4 Sek geschafft, fehlerfrei!") ...oder du brauchst 38:58,60 minuten um es zu verstehen. Dann würde mich allerdings dein letzter Post wundern
Sea-life hat geschrieben:welche python version benutzt du und welches OS
2.5.2 / Windows32 (noch, siehe unten, was ich davon halte...)
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Das Aufsahen von Aluminiumminimumimmunität dauerte 1,3 sek -.-
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Dann schilder mal was du nicht verstehst... :wink:
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Die Fragestellung :O
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Dauerbaustelle hat geschrieben:Die Fragestellung :O
Sie kann nicht wirklich wichtig sein, wenn sich der OP so wenig Mühe gibt das ganze besser darzustellen ;-)
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Hyperion hat geschrieben:
Dauerbaustelle hat geschrieben:Die Fragestellung :O
Sie kann nicht wirklich wichtig sein, wenn sich der OP so wenig Mühe gibt das ganze besser darzustellen ;-)
Ich möchte verhindern das das:

Code: Alles auswählen

gedr³ckt: Ó
gedr³ckt: H
passiert und stattdessen:

Code: Alles auswählen

gedrückt: {left}
vielleicht mit einem dict?

Code: Alles auswählen

dict={"Ó","H":"{left}"}
gedrückt=mscvrt.getch()
if gedrückt in dict.keys:  gedrückt=dict[gedrückt]
Ich habe nur das builtin dict als dictionari genommen, weil es ein beispiel ist.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

INFACT hat geschrieben: Ich möchte verhindern das das:

Code: Alles auswählen

gedr³ckt: Ó
gedr³ckt: H
Soll ich dir Fragestellung aus dem Arsch ziehen? Ich habe echt besser zu tun! ....*abreg* Okay, und warum passiert das und wann?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das Enconding ist falsch und INFACT versucht das jetzt irgendwie über Textersetzung zu lösen, was eher keine gute Idee ist.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Leonidas hat geschrieben:Das Enconding ist falsch und INFACT versucht das jetzt irgendwie über Textersetzung zu lösen, was eher keine gute Idee ist.
1. # coding=iso-8859-1
Dann macht es statt dem O* ein a mit einem schlängel oben.
Welches soll ich denn nehmen?

2. Wie soll ich es sonst lösen?, ich will nur dass es etwas macht zb. print "hi" wenn "{up}" gedrückt ist, also sowas wie SendKeys, nur HotKeys...
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

INFACT hat geschrieben:
Leonidas hat geschrieben:Das Enconding ist falsch und INFACT versucht das jetzt irgendwie über Textersetzung zu lösen, was eher keine gute Idee ist.
1. # coding=iso-8859-1
Dann macht es statt dem O* ein a mit einem schlängel oben.
Welches soll ich denn nehmen?
Das Encoding was du da angibst, ist nur dafür da, dass Unicode-Strings (also die mit dem ``u'...'``) mit diesem Encoding dekodiert werden.

Für die Ausgabe musst du die Unicode-Strings in Bytestrings enkodieren und zwar mit dem Encoding, dass deine Konsole/Ausgabe erwartet. Bei mir ist das UTF-8.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Achso...
Das wusste ich ja nicht :oops: :roll:
Danke für eure Hilfe! Jetzt klappts!

Vielen Dank
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Antworten