[wxPython] 네이버 사전

Python : 2007. 4. 12. 02:09
반응형

네이버 사전

네이버 사전 창을 띄우는 아주 간단한 예제이다.

wxPython에서 제공하는 Internet Explorer 컨트롤을 이용했다.

Internet Explorer에 네이버 사전을 깔아 보았다면 알겠지만 단어에 Alt + 마우스 왼쪽 버튼을 누르면 네이버 사전 창이 뜬다. 마찬가지로 이 예제를 활용해서 자기가 만든 프로그램에 네이버 사전을 추가할 수 있을 거다.

# -*- coding: UTF-8 -*-

import wx;
import wx.lib.iewin as iewin;

__naverDicFrame = None;

def NaverDic(word) :
    global __naverDicFrame;
    if __naverDicFrame == None :
        __naverDicFrame = NaverDicFrame(

                None, -1, "Dooly.네이버 사전", size = (370, 480));
        __naverDicFrame.Show(True);
       
    __naverDicFrame.Raise();
    __naverDicFrame.SearchWord(word);
       
       
def Destroy() :
    global __naverDicFrame;
    __naverDicFrame = None;

class NaverDicFrame(wx.Frame) :
    url = "
http://220.73.176.121/dicsm.php?j=1&query=";
   
    #영어 사전
    #url = "
http://220.73.176.121/endicsm.php?where=endicsm&mode=srch&query="
   
    #국어 사전
    #url = "
http://220.73.176.121/krdicsm.php?where=krdicsm&mode=srch&query="
   
    #일어 사전
    #url = "
http://220.73.176.121/jpdicsm.php?where=jpdicsm&mode=srch&query="
   


    def __init__(
            self, parent, ID, title, pos = wx.DefaultPosition,
            size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE
            ) :
        wx.Frame.__init__(self, parent, ID, title, pos, size, style);
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow);
        self.Initialize();
       
   
    def OnCloseWindow(self, evt) :
        Destroy();
        self.Destroy();
       
       
    def Initialize(self) :
        self.ie = iewin.IEHtmlWindow(self, -1,
            style = wx.NO_FULL_REPAINT_ON_RESIZE);
           
           
    def SearchWord(self, word) :
        search = self.url + word;
        self.ie.LoadUrl(search);

if __name__ == "__main__" :
    class MyApp(wx.App) :
        def __init__(self, redirect = 0) :
            wx.App.__init__(self, redirect);
       
        def OnInit(self) :
            NaverDic("matrix");
            return True;
           
    app = MyApp();
    app.MainLoop();


예제에서 알수 있듯 frame 클래스인 NaverDicFrame을 인스턴스해서 직접 창을띄우지 않고 NaverDic()함수를 이용해 간접적으로 창을 띄웠다.

이유는 호출될때 마다 쓸때 없이 새 창을 여러개 띄우지 않기 위해서다.

NaverDic()함수는 창이 띄워져 있는지 검사하고 이미 있다면 그 창을 화면 맨 위로 올려 준다. 만약 창이 없다면 창을 생성하고 사전을 검색한다. 이렇게 항상 화면에 하나의 창만 존재 한다.

영어, 국어, 일본어 질의 주소가 각각 다른 데, 만약 일본어를 기본 검색으로 하고 싶다면 일본어 질의 주소로 바꾸면 된다.

이 예제는 Python 2.3.3, wxPython 2.5.1, Windows 시스템에서 테스트 되었다.

밑의 그림은 이 예제의 실행 화면이다.

사용자 삽입 이미지

반응형

'Python' 카테고리의 다른 글

python에서의 singleton pattern  (0) 2007.04.12
[wxPython] 빈 Frame을 만들자  (0) 2007.04.12
이클립스와 앤트를 이용한 파이슨 개발  (0) 2007.04.12
Posted by Real_G