Tastenkombination ( ESC )

Plattformunabhängige GUIs mit wxWidgets.
Antworten
rogen
User
Beiträge: 85
Registriert: Dienstag 29. März 2005, 17:45
Wohnort: neustift
Kontaktdaten:

Sonntag 14. Januar 2007, 13:28

Wie kann ich aus dem F4 ein ESC machen ?

mein Code

menubar = wx.MenuBar()
file = wx.Menu()
file.Append(101, '&spring \tF4', 'Open a new document')
menubar.Append(file, '&File')
wx.EVT_MENU(self, 101, self.springen )

mfg

gerhard rogen
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Sonntag 14. Januar 2007, 14:44

Hi.

http://wxwidgets.org/manuals/2.8.0/wx_w ... menuappend
DEL or DELETE Delete key
INS or INSERT Insert key
ENTER or RETURN Enter key
PGUP PageUp key
PGDN PageDown key
LEFT Left cursor arrow key
RIGHT Right cursor arrow key
UP Up cursor arrow key
DOWN Down cursor arrow key
HOME Home key
END End key
SPACE Space
TAB Tab key
ESC or ESCAPE Escape key (Windows only)

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx


class MainFrame(wx.Frame):
    def __init__(self, parent=None, id=-1, title = "MyApp"):
         wx.Frame.__init__(self, parent, id, title)
         
         menubar = wx.MenuBar()
         file = wx.Menu()
         file.Append(101, '&spring \tESC', 'Open a new document')
         menubar.Append(file, '&File')
         self.SetMenuBar(menubar)
         wx.EVT_MENU(self, 101, self.springen )
     
    def springen(self, event):
        print "def springen(self, event):"

def main():
    app = wx.PySimpleApp()
    mf =  MainFrame()
    mf.Show()
    app.MainLoop()

if __name__ == "__main__":
    main()
lg

EDIT: Denk aber dran:
ESC or ESCAPE Escape key (Windows only)
Auf Linux läuft das dann höchstwahrscheinlich nicht (Es sei den die haben das geändert.).
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Sonntag 14. Januar 2007, 14:56

rogen hat geschrieben:Wie kann ich aus dem F4 ein ESC machen?
Hi Gerhard!

Normalerweise so:

Code: Alles auswählen

        menubar = wx.MenuBar()
        mnu_file = wx.Menu()
        mnu_f_new = mnu_file.Append(-1, '&spring \tESC', 'Open a new document')
        self.Bind(wx.EVT_MENU, self.springen)
        menubar.Append(mnu_file, '&File')
        self.SetMenuBar(menubar)
Allerdings gibt es anscheinend einen Bug im wxPython 2.7-2.8 für Windows. Der hat damit evt. etwas zu tun, dass es nicht funktioniert.

Siehe: http://lists.wxwidgets.org/cgi-bin/ezml ... mahakmkncg

Du kannst dir in der Zwischenzeit vielleicht damit abhelfen:

Code: Alles auswählen

    def __init__(...):
        ...
        self.Bind(wx.EVT_CHAR_HOOK, self.on_self_char_hook)
    
    def on_self_char_hook(self, event):
        if event.GetKeyCode() == wx.WXK_ESCAPE:
            print "Es wurde ESC gedrueckt"
        event.Skip()
mfg
Gerold
:-)
Zuletzt geändert von gerold am Sonntag 14. Januar 2007, 15:46, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Sonntag 14. Januar 2007, 15:30

file = wx.Menu()
BTW: Was mit gerade erst auffällt. keine Keywords überschreiben rogen.
Sorry hatte das bei deinem Code übersehn und das da so übernommen (Copy & Paste).

Im Zweifelsfall an PEP8 halten (wenn es den unbedingt ``list``, ``file``, etc heißen muss ) und dann so machen: ``file_``

Noch besser ist allerdings die Variante von Gerold mit ``mnu_file`` oder ``menu_file``, was es besser beschreibt.

lg
Antworten