[파이썬] wxPython `wx.Notebook`: 탭 인터페이스

wxPython is a popular Python library that allows you to create cross-platform desktop applications with graphical user interfaces (GUIs). One of the many useful components provided by wxPython is the wx.Notebook widget, which allows you to create a tabbed interface in your application.

What is a Tabbed Interface?

A tabbed interface, also known as a tabbed layout or tabbed navigation, allows you to organize content into separate tabs within a single window. Each tab represents a different section or category, and users can switch between tabs by clicking on them.

How to Use wx.Notebook in wxPython

To use the wx.Notebook widget in wxPython, you need to follow these steps:

  1. Import the necessary wxPython module: import wx
  2. Create an instance of the wx.Frame class as the main application window.
  3. Create an instance of the wx.Notebook class as a child of the main window.
  4. Create the individual tabs as instances of the wx.Panel class, and add them to the wx.Notebook using the AddPage method.
  5. Add content to each tab by placing other widgets, such as buttons, labels, or text boxes, on the corresponding wx.Panel.

Here’s an example code snippet demonstrating the usage of wx.Notebook in wxPython:

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, title="Tabbed Interface Example", size=(500, 400))
        notebook = wx.Notebook(self)

        tab1 = wx.Panel(notebook)
        button1 = wx.Button(tab1, label="Button 1")
        button2 = wx.Button(tab1, label="Button 2")

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(button1, 0, wx.ALL, 5)
        sizer1.Add(button2, 0, wx.ALL, 5)
        tab1.SetSizer(sizer1)

        tab2 = wx.Panel(notebook)
        label = wx.StaticText(tab2, label="Hello, this is Tab 2")
        tab2.SetSizer(wx.BoxSizer(wx.VERTICAL))
        tab2.GetSizer().Add(label, 0, wx.ALL, 5)

        notebook.AddPage(tab1, "Tab 1")
        notebook.AddPage(tab2, "Tab 2")

app = wx.App()
frame = MyFrame(None)
frame.Show()
app.MainLoop()

In this example, we create a wx.Frame instance named MyFrame and add a wx.Notebook widget as its child. Two tabs are created using wx.Panel, and various widgets are placed on each tab. The AddPage method is used to add the tabs to the wx.Notebook. Finally, the application is launched using wx.App and app.MainLoop().

Conclusion

The wx.Notebook widget in wxPython provides an easy way to create tabbed interfaces in your desktop applications. By grouping related content into separate tabs, you can improve the organization and usability of your application.