[파이썬] wxPython 키보드와 마우스 이벤트

wxPython is a popular GUI toolkit for Python that allows developers to create user-friendly desktop applications. In this blog post, we will explore how to handle keyboard and mouse events in wxPython.

Handling Keyboard Events

To handle keyboard events in wxPython, we need to override the wx.Frame class and define event handler methods. Let’s take a look at an example:

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent):
        super().__init__(parent)
        self.Bind(wx.EVT_CHAR, self.on_key_press)
        
    def on_key_press(self, event):
        keycode = event.GetKeyCode()
        
        if keycode == wx.WXK_ESCAPE:
            self.Close()
        else:
            print(f"Key pressed: {keycode}")
        
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame(None)
    frame.Show()
    app.MainLoop()

In this example, we create a subclass of wx.Frame called MyFrame and override the on_key_press method to handle keyboard events. We bind the wx.EVT_CHAR event to the on_key_press method using the Bind method. Inside the on_key_press method, we retrieve the keycode of the pressed key using event.GetKeyCode().

In this example, if the Escape key is pressed, we close the frame using self.Close(). For other keys, we simply print the keycode to the console.

Handling Mouse Events

Similarly, we can handle mouse events in wxPython by overriding the wx.Frame class and defining event handler methods. Here’s an example:

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent):
        super().__init__(parent)
        self.Bind(wx.EVT_LEFT_DOWN, self.on_mouse_left_down)
        self.Bind(wx.EVT_LEFT_UP, self.on_mouse_left_up)
        
    def on_mouse_left_down(self, event):
        pos = event.GetPosition()
        print(f"Left mouse button down at ({pos.x}, {pos.y})")
        
    def on_mouse_left_up(self, event):
        pos = event.GetPosition()
        print(f"Left mouse button up at ({pos.x}, {pos.y})")
        
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame(None)
    frame.Show()
    app.MainLoop()

In this example, we override the on_mouse_left_down and on_mouse_left_up methods to handle the left mouse button down and up events, respectively. We bind the wx.EVT_LEFT_DOWN and wx.EVT_LEFT_UP events to these methods using the Bind method. Inside each event handler method, we retrieve the mouse position using event.GetPosition() and print it to the console.

Conclusion

Handling keyboard and mouse events is essential for building interactive GUI applications. This blog post provides a basic overview of handling keyboard and mouse events in wxPython. With this knowledge, you can start building more interactive and responsive desktop applications using wxPython.