Seite 1 von 1
Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 11:06
von djevil
Moin,
Ich versuche hier schon eine ganze Weile, einen String auszuführen:
Code: Alles auswählen
key1 = data[26] ## int
print(key1)
key2 = keycode[key1] ## int
print(key2)
key3 = "uinput." + str(key2)
print(key3)
device.emit_click(key3)
print(key3) gibt:
und ausgeführt werden soll:
Also es sieht zumindest richtig aus, auch wenn sicher sehr umständlich, aber warum funktioniert es aber dennoch nicht?
Mfg
d
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 11:13
von BlackJack
@djevil: Du willst keine Zeichenketten ausführen!
Die erste Frage ist warum `key2` den Wert 'KEY_X' hat, wo der Kommentar doch ``## int`` verspricht‽ Wie kommt `keycode` zustande und warum steht da ein Name und nicht schon der Wert, den Du eigentlich haben willst?
Ansonsten suchst Du die `getattr()`-Funktion um vom `uinput`-Objekt das Attribut abzufragen dessen Name an `key2` gebunden ist.
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 12:06
von djevil
O, sorry, key2 ist schon string
Code: Alles auswählen
key1 = data[26] ## int
print(key1)
key2 = "uinput."+keycode[key1] ## key1= int, str keycode from dict
print(key2)
device.emit_click(key2)
print(getattr(uinput, "KEY_5"))
Ausgabe
>> (1, 6) ## KEY_5 = (0x01, 6) lt. Definition
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 12:50
von djevil
@BlackJack:
Du willst keine Zeichenketten ausführen!
Ja, weiss nicht, ich will halt das Argument als Variable ausführen..
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 12:53
von Sirius3
@djevil: was ist keycode? Und warum stehen da nicht schon die KEY-Konstanten sondern nur die Namen als Strings drin?
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 12:59
von djevil
ich habe halt die Tasten mit einem dict auf die uinput codes gemappt,
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 13:18
von Sirius3
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 17:37
von djevil
Dann gibt mir:
ein Tupel: (1,2) zurück
wie bekomme ich den Wert
uinput.KEY_1
?
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 17:54
von Sirius3
@djevil: der Wert von uinput.KEY_1 ist ein Tuple: (1, 2). Den Wert »uinput.KEY_1« gibt es nicht. Den brauchst Du ja auch nirgends.
Re: Widerspenstiger String
Verfasst: Dienstag 6. Dezember 2016, 19:08
von djevil
Tatsächlich
Mfg d