본 내용의 출처는 이글루 블로그의 '하린아빠' 라는 네임을 쓰시는 분의 블로그입니다.
[출처] - http://pythondev.egloos.com/103759
행여나 이글루 블로그가 없어지면 참고할 곳이 사라지기에 주인장님께 댓글을 남기고 퍼 옵니다.
[wxPython] Bitmap 화면에 출력하기
#!/usr/bin/python
# -*- coding: cp949 -*-
# bitmap.py
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size = (300, 300))
# bitmap 생성
self.bitmap = wx.Bitmap('images/memento.jpg')
# Paint 이벤트 연결
wx.EVT_PAINT(self, self.OnPaint)
self.Centre()
def OnPaint(self, event):
# dc 생성
dc = wx.PaintDC(self)
# 60, 20 좌표에 Bitmap 로드
dc.DrawBitmap(self.bitmap, 60, 20)
class MyApp(wx.App):
def OnInit(self):
frame = MyFrame(None, -1, 'Memento')
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(0)
app.MainLoop()
[실행 화면]
p.s 윗 코드에 보면 def OnPaint가 있는데, 저렇게 쓰면 상위 클래스의 메소드와 동일한 이름을 명명해서
그런지, signature does not match 메시지가 발생한다. 오버라이딩이 되는 거라고 봐야 하는 거 같은데..
상위 클래스라면 wx.Frame에 동일한 메소드가 정의 되어 있을텐데 뒤져봐도 나오진 않더라.
(내가 못 찾은 건지... 흠 ㅡㅡㅋ)
아무튼 그래서 OnPaint라는 것은 이름을 바꿔서 지정하는 것이 나을 듯 하다.
OnPaint의 이름을 바꿔서 쓴다면 그 메소드는 def__init__ 메소드 안에서 wx.EVT_PAINT 의 인자값으로도
호출(self.OnPaint)되고 있기 때문에 그 부분도 같이 바꾸어주어야 안 바꾸면 호출 시에 에러가 똿~~
'Language > Python' 카테고리의 다른 글
[wxPython] 이벤트02 (사이즈 이벤트 예제 : wx.EVT_SIZE) (0) | 2017.02.06 |
---|---|
[wxPython] 이벤트01 (스크롤 이벤트 예제) (0) | 2017.02.06 |
[wxPython] 패널의 색상을 시간 단위로 변경하기(wx.Timer, colours.py) (0) | 2017.02.06 |
[wxPython] 색상 설정하기(wx.Colour, SetBackgroundColour) (0) | 2017.02.06 |
[wxPython] wx.Font를 이용한 폰트 지정하기 (0) | 2017.02.06 |