Key Event funktioniert nicht unter Linux

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Bluecaspar
User
Beiträge: 27
Registriert: Samstag 18. März 2006, 20:06

Ich habe auf meinem Rechner Ubuntu und Windows. Auf beiden führ ich ein und das selbe Skript aus. Unter Windows funktionierts mit den Key Events unter Linux nicht.

Hat jemand eine Idee woran das liegen könnte?
Crush
User
Beiträge: 44
Registriert: Montag 1. Mai 2006, 11:32

Hi Bluecaspar,

Wenn du noch einige zusätzliche Informationen bereitstellen würdest, könnte man versuchen, das Problem zu reproduzieren.

Welche Ubuntu-Version (bzw. welche Python- und wxPython-Version) benutzt du? Welche Python- und wxPython-Version unter Windows? Wie sieht der Teil des Codes aus, bei dem der Fehler (bzw. das "Nichtfunktionieren") mit den Key Events ensteht?

Crush
Bluecaspar
User
Beiträge: 27
Registriert: Samstag 18. März 2006, 20:06

Ach, wenn's doch nur so einfach wäre :roll:

Die Ubuntu Veriosn ist 6.06 und dann verwende ich halt noch Windows XP Professional. Bei beiden Betriebssystemen verwende ich Pyhton 2.4.3 und wxPython 2.6.

Das Skript hatte ich mir einfach irgendwo her geklaut und funktioniert an sich Fehlerfrei, auch unter Linux. Es werden die Key Events halt einfach nicht ausgeführt, ohne das auch nur irgend eine Fehlermeldung erscheint.

Komisch, komisch

Code: Alles auswählen

import wx

class MainFrame(wx.Frame):
    def __init__(self, parent, ID, title):
        wx.Frame.__init__(self, parent, ID, title,
                            wx.DefaultPosition, wx.Size(600, 100))
        self.panel = wx.Panel(self,-1)
                            
        self.panel.Bind(wx.EVT_KEY_DOWN, self.OnKey)
                            
    def OnKey(self, event):
        print "KeyCode: %i" % event.GetKeyCode()
        event.Skip()
        
class MyApp(wx.App):
    def OnInit(self):
        Frame = MainFrame(None, -1, "wx.WANTS_CHARS Demo")
        Frame.Show(True)
        self.SetTopWindow(Frame)
        return True
 
if __name__ == '__main__':
    App = MyApp(0)
    App.MainLoop()
[/code]
Crush
User
Beiträge: 44
Registriert: Montag 1. Mai 2006, 11:32

Hi Bluecaspar,

Mir ist jetzt nur aufgefallen, dass man zuerst ins Fenster klicken muss, damit das Panel den Focus erhält. Wenn du in der Zeile 8

Code: Alles auswählen

self.panel.SetFocus()
hineinschreibst, erhält das Panel den Fokus gleich zu Beginn.

Ansonsten funktioniert das Skript bei mir wie es sollte (Ubuntu 6.06, Python 2.4.3, wxPython 2.6.1.2).

Crush
Bluecaspar
User
Beiträge: 27
Registriert: Samstag 18. März 2006, 20:06

Weis der Teufel woran's worans liegt. Das mit dem Focus macht bei mir auch keinen Unterschied. :(
Antworten