Hallo,
ich habe ein kleines Problem mit der Taste F10.
Ich fange den KeyDown und KeyUp der Taste ab und bekomme im Prinzip auch das gewünschte Ergebnis jedoch verliere ich den Focus aus dem Panel an das MenuBar. Das möchte ich jedoch gern verhindern.
Kann mir da jemand helfen?
Viele Grüße
Key F10 abfangen
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi ZZHAT!ZZHAT hat geschrieben:jedoch verliere ich den Focus aus dem Panel an das MenuBar.
F10 ist vom Betriebssystem her für den Sprung zum Menü des aktuellen Fensters reserviert. Das zu unterbinden ist mir bis jetzt noch nicht gelungen.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
evtl kannst du ein Veto einlegen (evtl)
Hallo gerold,
ist ja echt eigenwillig..
Es muss doch ein Weg geben.. verflixt nochmal..
Muss ich direkt mal ausprobieren ob mich das Problem auch in anderen Sprachen einschränkt.
Hallo DatenMetzgerX,
das mit dem Veto ist gut hehehe.
Viele Grüße
ist ja echt eigenwillig..
Es muss doch ein Weg geben.. verflixt nochmal..
Muss ich direkt mal ausprobieren ob mich das Problem auch in anderen Sprachen einschränkt.
Hallo DatenMetzgerX,
das mit dem Veto ist gut hehehe.
Viele Grüße
Hallo zusammen,
ich habe für mich eine Lösung gefunden. Sie ist zwar eigentlich nicht das,
was ich mir vorgestellt habe aber ich kann damit erstmal leben.
Beim stöbern im Netz, bin ich auf "RegisterHotKey" und "UnregisterHotKey" gestoßen.
Leider funktionierte bei mir das mit dem "UnregisterHotKey" überhaupt nicht
und sowas wie "KeyboardHook", wollt ich jetzt nicht auch noch bauen.
Ich habe mich dann dazu entschlossen für die Laufzeit, der Anwendung,
F10 als HotKey zu definieren und damit den SystemHotKey
ausser Kraft zu setzen. Dies Funktioniert bei mir soweit ich das testen konnte
einwandfrei.
Aber wie immer ist ein Beispiel am besten:
Edit by Gerold: Code-Tag geändert
ich habe für mich eine Lösung gefunden. Sie ist zwar eigentlich nicht das,
was ich mir vorgestellt habe aber ich kann damit erstmal leben.
Beim stöbern im Netz, bin ich auf "RegisterHotKey" und "UnregisterHotKey" gestoßen.
Leider funktionierte bei mir das mit dem "UnregisterHotKey" überhaupt nicht
und sowas wie "KeyboardHook", wollt ich jetzt nicht auch noch bauen.
Ich habe mich dann dazu entschlossen für die Laufzeit, der Anwendung,
F10 als HotKey zu definieren und damit den SystemHotKey
ausser Kraft zu setzen. Dies Funktioniert bei mir soweit ich das testen konnte
einwandfrei.
Aber wie immer ist ein Beispiel am besten:
Code: Alles auswählen
# -*- coding: iso-8859-1 -*-
import wx
import win32con #VK keycodes
ID_MENU_5 = 5
class FrameWithHotKey(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.regHotKey()
self.Bind(wx.EVT_HOTKEY, self.handleHotKeyF10, id=self.hotKeyIdF10)
self.MenuBar= wx.MenuBar()
self.Verwaltung=wx.Menu()
self.MenuBar.Append(self.Verwaltung,"Verwaltung")
itemmenu = wx.MenuItem(self.Verwaltung,ID_MENU_5,"Item5","",0)
self.Verwaltung.AppendItem(itemmenu)
self.SetMenuBar(self.MenuBar)
def regHotKey(self):
self.hotKeyIdF10 = 50001
self.RegisterHotKey(
self.hotKeyIdF10, #Eindeutige ID fuer den HotKey
0,
win32con.VK_F10) #Key auf den geachtet werden soll
def handleHotKeyF10(self, evt):
print "F10 gehört nun nur noch mir"
class App(wx.App):
def OnInit(self):
frame = FrameWithHotKey(None,-1,'')
frame.Show()
return 1
def main():
application = App(0)
application.MainLoop()
if __name__ == '__main__':
main()
Zuletzt geändert von ZZHAT am Mittwoch 9. August 2006, 22:52, insgesamt 1-mal geändert.
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Vielleicht kann man die Bedingung einbauen, dass das Programm nur startet, wenn die Taste F10 von der Tastatur entfernt wurde. Ich habe noch gar nicht alle durchprobiert, aber bislang brauchte ich als Windoof-User nur die F8.
Michael
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...