본문 바로가기

Language/Python

[wxPython] wx.ComboBox(콤보 박스)를 사용법 및 이벤트 처리

본 내용의 출처는 이글루 블로그의 '하린아빠' 라는 네임을 쓰시는 분의 블로그입니다.

[출처] - http://pythondev.egloos.com/107312


행여나 이글루 블로그가 없어지면 참고할 곳이 사라지기에 주인장님께 댓글을 남기고 퍼 옵니다.





[wxPython] wx.ComboBox(콤보 박스)를 사용법 및 이벤트 처리



# -*- coding: cp949 -*-
#!/usr/bin/python

# combobox.py

import wx


class MyDialog(wx.Dialog):
    def __init__(self, parent, id, title):
        wx.Dialog.__init__(self, parent, id, title, size=(250, 270))

        panel = wx.Panel(self, -1, (75, 20), (100, 127),  style=wx.SUNKEN_BORDER)
        # StaticBitmap 생성
        self.picture = wx.StaticBitmap(panel)
        
        panel.SetBackgroundColour(wx.WHITE)

        # 이미지 리스트 
        self.images = ['tolstoy.jpg', 'feuchtwanger.jpg', 'pasternak.jpg', 'galsworthy.jpg', 'wolfe.jpg', 'zweig.jpg']
        
        authors = ['Leo Tolstoy', 'Lion Feuchtwanger', 'Boris Pasternak', 'John Galsworthy', 'Tom Wolfe', 'Stefan Zweig' ]

       # 콤보 박스 생성
        wx.ComboBox(self, -1, pos=(50, 170), size=(150, -1), choices=authors, style=wx.CB_READONLY)
        wx.Button(self, 1, 'Close', (80, 220))

        self.Bind(wx.EVT_BUTTON, self.OnClose, id=1)
        self.Bind(wx.EVT_COMBOBOX, self.OnSelect)

        self.Centre()

    def OnClose(self, event):
        self.Close()


    # 콤보 박스 이벤트 처리
    def OnSelect(self, event):
        # 콤보 박스에서 선택한 아이템을 얻음.
        item = event.GetSelection()
        self.picture.SetFocus()
       # 선택한 항목에 해당하는 이미지를 로드함.
        self.picture.SetBitmap(wx.Bitmap('images/' + self.images[item]))


class MyApp(wx.App):
    def OnInit(self):
        dlg = MyDialog(None, -1, 'combobox.py')
        dlg.ShowModal()
        dlg.Destroy()
        return True

app = MyApp(0)
app.MainLoop()

[실행 화면]