2012-06-26 3 views
3

wxPython의 새로운 기능입니다. 간단한 튜토리얼 (http://wiki.wxpython.org/wxPython%20by%20Example)을 시작으로, Spyder와 wxPython간에 충돌이있는 것으로 보입니다. 내가 사용, 한 번합니다 (IPython 콘솔에서) 다음 스크립트를 실행할 수 있습니다Spyder와 wxPython간에 충돌이 있습니까?

import wx 

class Frame(wx.Frame): 
    def __init__(self, title): 
     wx.Frame.__init__(self, None, title=title, size=(350,200)) 

app = wx.App(redirect=True) 
top = Frame("Hello World") 
top.Show() 
app.MainLoop() 

하지만 그것을 실행하는 두 번째 시간, 나는 다음과 같은 오류가 발생했습니다 :

runfile(r'C:\Python27\Scripts\test\test.py') 

포함하는

Traceback (most recent call last): 
    File "<ipython console>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 493, in runfile 
execfile(filename, namespace) 
    File "C:\Python27\Scripts\test\test.py", line 14, in <module> 
top = Frame("Hello World") 
    File "C:\Python27\Scripts\test\test.py", line 11, in __init__ 
wx.Frame.__init__(self, None, title=title, size=(350,200)) 
    File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_windows.py", line 505, in __init__ 
_windows_.Frame_swiginit(self,_windows_.new_Frame(*args, **kwargs)) 
PyNoAppError: The wx.App object must be created first! 

실제로 이해가되지 않지만 분명히 spyder가 wxPython을 사용하여 작성되었으며 app.MainLoop()과 충돌한다는 사실과 관련이 있습니다.

누군가가 조금 더 확인하고 설명 할 수 있습니까?

고마워,

패트릭

답변

1

나는 당신이 당신이 IDLE, 파이썬과 함께 제공되는 Tkinter를 기반으로 파이썬 IDE를 사용하여 wxPython에 응용 프로그램을 실행할 경우에 실행할 수있는 동일한 문제입니다 같은데요. 기본적으로 두 개의 주요 루프가 있으며 결국에는 작동하지만 다른 경우에는 충돌이 발생하고 이와 같은 이상한 오류가 발생합니다. 제 생각에는 두 개의 wx.Apps가 실행 중일 때 "정의되지 않은"토지에 있다고 생각합니다. 이는 "나쁜"것입니다. IPython 자체, 명령 행 또는 두 가지 wx 이벤트 루프가없는 다른 방법으로 애플리케이션을 실행하기 만하면됩니다.

+0

안녕하세요. 빠른 대답을 해주셔서 감사합니다. 그것은 실제로 내가 현재하고있는 것입니다 : * .py 파일을 저장하고 "독립 실행 형"콘솔을 통해 시작하는 것 ... 개발을위한 userfriendly가 아니지만 나는 살아남을 것입니다 :-) 나는 pyDev (plug- in of Eclipse). 분명히 내 GUI를 개발하기 위해 wxPython을 기반으로하지 않습니다 .... 나는이 게시물에 내 연구 결과를 올리 겠어! 다시 한번 감사드립니다. – sweetdream

+0

Spyder 나 IDLE을 개발 용으로 사용할 수 있으며, 그 안에서 스크립트를 실행하지 마십시오. 현재 Wingware의 IDE를 사용하고 있습니다. Komodo는 http://www.activestate.com/komodo-edit 무료 버전을 제공합니다. 아니면 PyDev를 사용해보십시오. 나는 개인적으로 Eclipse 환경을 대단히 좋아하지 않는다. –

3

대화식 인터프리터 세션에서 예제를 실행하려고했기 때문에 문제라고 생각됩니다. 이 예제는 실제로 이벤트 루프가있는 GUI 응용 프로그램이며 마지막 실행에서 이전 응용 프로그램의 정리가 완전히 발생하지 않으므로 같은 대화식 세션에서 반복적으로 실행하면 제대로 작동하지 않습니다. 경험 한 것처럼 한번 실행되지만 후속 시도는 실패합니다. 이러한 예제는 GUI가 닫힐 때 완전히 종료 될 수있는 전용 인터프리터에서 실행되어야합니다.

Spyder에서 스크립트는 별도의 외부 콘솔에서 수동으로 실행하지 않고도 전용 독립 실행 형 인터프리터에서 실행되도록 구성 할 수 있습니다. 스파이더 편집기에서 파일을 열고 F6 키를 눌러 실행 설정 대화 상자를 연 다음 "새로운 전용 파이썬 인터프리터에서 실행"라디오 버튼을 선택하십시오. 이제 실행을 누르십시오. F5 키를 사용하여 계속 실행하면이 구성 설정을 기억하게되며 반복 실행될 때마다 자체 인터프리터에서 예제를 실행하게됩니다.

+0

Excelent 또한 내 문제를 해결했지만 Ctrl-F6을 눌러 F6뿐 아니라 설정 대화 상자 (Spider 3.2.3)를 열어야했습니다. –

관련 문제