[파이썬] wxPython `wx.RadioButton`: 라디오 버튼

라디오 버튼은 wxPython을 사용하여 사용자에게 여러 옵션 중 하나를 선택할 수 있는 인터페이스 요소입니다. wxPython은 파이썬으로 작성된 크로스 플랫폼 GUI 도구킷인 wxWidgets의 파이썬 바인딩입니다.

라디오 버튼은 여러 개의 옵션 중 하나만 선택할 수 있는 버튼입니다. 하나의 그룹으로 묶여 있으며, 그룹 내에서 하나의 버튼만 선택할 수 있습니다.

라디오 버튼 만들기

라디오 버튼을 만들기 위해 wx.RadioButton 클래스를 사용합니다. 각각의 라디오 버튼은 사용자의 선택을 나타내는 고유한 값을 가지고 있습니다.

다음은 두 개의 라디오 버튼을 생성하는 예제 코드입니다:

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title)
        panel = wx.Panel(self)

        # 첫 번째 라디오 버튼
        radio_btn1 = wx.RadioButton(panel, label='Option 1', style=wx.RB_GROUP)
        radio_btn2 = wx.RadioButton(panel, label='Option 2')

        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(radio_btn1, 0, wx.ALL, 5)
        vbox.Add(radio_btn2, 0, wx.ALL, 5)

        panel.SetSizer(vbox)
        self.Show()

app = wx.App()
MyFrame(None, title='라디오 버튼 예제')
app.MainLoop()

위의 코드에서는 wx.RadioButton 클래스를 이용해 두 개의 라디오 버튼을 생성합니다. 첫 번째 라디오 버튼에는 style=wx.RB_GROUP을 설정하여 그룹의 첫 번째 버튼으로 지정합니다. 그룹 내에서 하나만 선택할 수 있기 때문에 첫 번째 버튼을 기본 선택으로 설정합니다.

BoxSizer를 이용해 라디오 버튼을 Panel에 추가합니다.

wx.App을 생성하고 MyFrame을 실행하여 라디오 버튼이 표시되는 간단한 GUI 창을 만듭니다.

이벤트 처리

라디오 버튼의 선택은 사용자의 입력에 의해 변경될 수 있습니다. 이벤트를 처리하여 선택된 라디오 버튼을 확인하고 원하는 작업을 수행할 수 있습니다.

다음은 라디오 버튼을 처리하는 예제 코드입니다:

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        super().__init__(parent, title=title)
        panel = wx.Panel(self)

        self.radio_btn1 = wx.RadioButton(panel, label='Option 1', style=wx.RB_GROUP)
        self.radio_btn2 = wx.RadioButton(panel, label='Option 2')

        vbox = wx.BoxSizer(wx.VERTICAL)
        vbox.Add(self.radio_btn1, 0, wx.ALL, 5)
        vbox.Add(self.radio_btn2, 0, wx.ALL, 5)

        panel.SetSizer(vbox)
        self.Show()

        self.Bind(wx.EVT_RADIOBUTTON, self.on_radio_button)

    def on_radio_button(self, event):
        radio_btn = event.GetEventObject()
        print(f'Selected: {radio_btn.GetLabel()}')

app = wx.App()
MyFrame(None, title='라디오 버튼 예제')
app.MainLoop()

위의 코드에서 우리는 wx.EVT_RADIOBUTTON 이벤트를 처리하여 사용자가 라디오 버튼을 선택할 때마다 on_radio_button 메소드가 호출되도록 합니다. 선택된 라디오 버튼의 레이블을 얻기 위해 event.GetEventObject() 메소드를 사용합니다. 이 메소드는 이벤트를 발생시킨 객체를 반환합니다.

위의 코드는 선택된 라디오 버튼의 레이블을 콘솔에 출력합니다. 실제 응용 프로그램에서는 선택된 라디오 버튼의 값을 사용하여 추가적인 작업을 수행할 수 있습니다.

위의 예제는 간단한 라디오 버튼을 만들고 처리하는 방법을 보여줍니다. 필요한 경우 라디오 버튼의 텍스트, 스타일, 이벤트 처리 방식을 수정하여 요구 사항에 맞게 활용할 수 있습니다.