Hallo!
Wie definiert man den Keycode für Strg+C und Strg+V? Wenn ich das in der wx Demo ausprobiere, erhalte ich 22 und 3. Das funktioniert aber bei Abfragen (if event.keycode() == 22) nicht... Wenn ich mir einfach den Keycode print'en lasse, erhalte ich nur die Codes für die einzelnen Tasten aber nicht für die jeweilige Kombination.
Kann jemand helfen?
Liebe Grüsse
Stefanie
Keycode für Strg+C und Strg+V
http://www.snowflake-sl.info/index.html
Sorry hatte mich verschrieben, ich meinte GetKeyCode().
Geht nicht...Bekomme im Interpreter nur die Codes der einzelnen Tasten und in der Demo Code 3 für strg+c und 22 für strg+v.
Tut sich nichts...Kontrolle funktioniert super (z.B. mit Taste 1)
Geht nicht...Bekomme im Interpreter nur die Codes der einzelnen Tasten und in der Demo Code 3 für strg+c und 22 für strg+v.
Code: Alles auswählen
if event.GetKeyCode() ==3:
bla
http://www.snowflake-sl.info/index.html
Was bedeuten 'Interpreter' (etwa Idle?) und 'Kontrolle funktioniert super'? Könntest Du etwas mehr Code zeigen?
MfG
HWK
Edit: Ich habe es jetzt einmal mit einem Minimalprogramm ausprobiert. Bei mir funktioniert alles tadellos. Wenn es bei Dir immer noch nicht laufen sollte, musst Du mehr Informationen, insbesondere Code liefern.
MfG
HWK
Edit: Ich habe es jetzt einmal mit einem Minimalprogramm ausprobiert. Bei mir funktioniert alles tadellos. Wenn es bei Dir immer noch nicht laufen sollte, musst Du mehr Informationen, insbesondere Code liefern.
ok:
Code: Alles auswählen
def OnKey(self, event):
print event.GetKeyCode()
if event.GetKeyCode() == 49:
print "one"
self.selection()
self.copy()
if event.GetKeyCode() == 50:
print "two"
self.selection()
self.paste()
# Skip other Key events
if event.GetKeyCode():
event.Skip()
return
http://www.snowflake-sl.info/index.html
ok, hier ein Auszug:
1) print event.GetKeyCode() gibt im Idle wenn ich strg+v drücke nur die Codes der einzelnen Tasten aus (308 für strg und 86 für v)
2) Wenn ich 1 oder 2 drücke (Keycode 49 bzw. 50) funktioniert alles und er fürt self.copy und self.paste aus.
3) Wenn ich in der wxDemo das Keyevent Beispiel ausprobiere, erhalte ich für strg+v als char 22. Setze ich dieses aber in der keycode Abfrage anstatt 49 ein, also
...wird self.copy nicht ausgeführt...
Ich hoffe das war verständlicher!
Stefanie
Code: Alles auswählen
def OnKey(self, event):
print event.GetKeyCode()
if event.GetKeyCode() == 49:
print "one"
self.selection()
self.copy()
elif event.GetKeyCode() == 50:
print "two"
self.selection()
self.paste()
elif event.GetKeyCode():
event.Skip()
return
1) print event.GetKeyCode() gibt im Idle wenn ich strg+v drücke nur die Codes der einzelnen Tasten aus (308 für strg und 86 für v)
2) Wenn ich 1 oder 2 drücke (Keycode 49 bzw. 50) funktioniert alles und er fürt self.copy und self.paste aus.
3) Wenn ich in der wxDemo das Keyevent Beispiel ausprobiere, erhalte ich für strg+v als char 22. Setze ich dieses aber in der keycode Abfrage anstatt 49 ein, also
Code: Alles auswählen
if event.GetKeyCode() == 22:
print "ok"
self.selection()
self.copy()
Ich hoffe das war verständlicher!
Stefanie
Zuletzt geändert von ete am Mittwoch 25. Juni 2008, 11:14, insgesamt 1-mal geändert.
http://www.snowflake-sl.info/index.html
"elif" und "else" sind hier angebracht
Und wenn die Methode nicht noch weiter geht, dann ist das return etwas seltsam.
Wenn du das "self.selection()" in "copy" und "past" hineinziehst (und die Methode nicht länger ist), dann geht es noch etwas kürzer:

Wenn du das "self.selection()" in "copy" und "past" hineinziehst (und die Methode nicht länger ist), dann geht es noch etwas kürzer:
Code: Alles auswählen
{49:self.copy, 50:self.paste}.get(event.GetKeyCode(), event.Skip)()
Ja, klar hab mich vertippt und es geht noch weiter:D
Hab's editiert
Hab's editiert

Diese Schreibart ist irgendwie nicht mein Ding...EyDu hat geschrieben:Code: Alles auswählen
{49:self.copy, 50:self.paste}.get(event.GetKeyCode(), event.Skip)()
http://www.snowflake-sl.info/index.html
Das Problem dürfte wie so oft Idle sein. Läuft es denn in der Konsole?
Dies ist mein Testscript:Es funktioniert problemlos sowohl in der Konsole als auch (wohl zufälligerweise) in Idle.
MfG
HWK
Dies ist mein Testscript:
Code: Alles auswählen
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, -1)
tc = wx.TextCtrl(self, -1, 'Dummy', size=(125, -1))
tc.Bind(wx.EVT_CHAR, self.on_char)
def on_char(self, event):
keycode = event.GetKeyCode()
modifiers = ''
for mod, ch in [(event.ControlDown(), 'C'),
(event.AltDown(), 'A'),
(event.ShiftDown(), 'S'),
(event.MetaDown(), 'M')]:
if mod:
modifiers += ch
else:
modifiers += '-'
print keycode, modifiers
if keycode == 22:
print 'String-V'
elif keycode == 3:
print 'String-C'
def main():
app = wx.PySimpleApp(False)
frame = wx.Frame(None, -1, 'Titel', size=(500, 500))
panel = MyPanel(frame)
frame.Show()
app.MainLoop()
if __name__ == '__main__':
main()
MfG
HWK
Ok, in der Konsole geht's...Mein Script, sowie auch deines.
Vielen Dank!
Vielen Dank!
http://www.snowflake-sl.info/index.html