[파이썬] wxPython `wx.ScrolledWindow`: 스크롤 가능한 윈도우

In GUI applications, it is common to have windows or panels that contain more content than can fit within the available space. One way to handle this situation is to use a scrollable window that allows users to navigate through the content using a scroll bar. In wxPython, we can achieve this functionality using the wx.ScrolledWindow class.

Setting Up the Environment

Before we start working with wx.ScrolledWindow, we need to ensure that wxPython is installed on our system. We can install it using pip by running the following command:

pip install wxpython

Once we have wxPython installed, we can proceed with creating our scrollable window.

Creating the Scrollable Window

First, let’s import the necessary modules and set up a simple wxPython application:

import wx

class ScrollableWindow(wx.Frame):
    def __init__(self, parent):
        super().__init__(parent, title="Scrollable Window")
        
        self.scrollwin = wx.ScrolledWindow(self)
        self.scrollwin.SetScrollbars(20, 20, 50, 50)  # Set the scroll step and range
        
        # Add content to the scrollable window
        self.panel = wx.Panel(self.scrollwin)
        self.text = wx.StaticText(self.panel, -1, "Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
        
        # Set the sizer to automatically adjust the position of the content
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.text, 0, wx.ALL, 10)  # Add padding around the text
        
        self.panel.SetSizer(self.sizer)
        self.scrollwin.SetSizer(self.panel.GetSizer())
        
        self.Show()

app = wx.App()
frame = ScrollableWindow(None)
app.MainLoop()

In the above code, we create a subclass of wx.Frame called ScrollableWindow. Inside the constructor, we create an instance of wx.ScrolledWindow and set its scroll step and range using the SetScrollbars method. We then add content to the scrollable window by creating a panel and adding a static text control to it. Finally, we set the sizer for the panel and the scrollable window to ensure the content is positioned correctly.

Running the Application

Save the above code in a file (e.g., scrollable_window.py) and run it using the Python interpreter:

python scrollable_window.py

You should see a window titled “Scrollable Window” with a scrollable panel containing the text “Lorem ipsum dolor sit amet, consectetur adipiscing elit.” Use the scroll bars to navigate through the content.

Conclusion

By using wx.ScrolledWindow in wxPython, we can easily create scrollable windows or panels to handle situations where the content exceeds the available space. This allows users to navigate through the content using scroll bars, providing a more user-friendly experience.