2013-10-20 7 views
1

최근에 iPython의 Enthought 배포판을 보았습니다. 오늘 나는 일부 Qt GUI 프로그램을 실행할 수 있는지 알아보기로하고 사소한 변경을 한 후에 성공했다. 간단한 예 :Enthought Canopy - PySide Qt 프로그램에서 sys.argv 전달하기

import sys 
from PySide import QtGui # was 'from PyQT4 import QtGui' 

# app = QtGui.QApplication(sys.argv) -- not needed 

win = QtGui.QWidget() 

win.resize(320, 240) 
win.setWindowTitle("Hello MIT 6X!") 
win.show() 

sys.exit() # was 'sys.exit(app.exec_())' 

하지만 어떤 경우에는 sys.argv을 통과 할 수 있도록하고 싶습니다. 내가 본 대부분의 예제 코드는 위에 설명 된 코드 'app = '의 형태로되어 있습니다. 포함 시키면 얻을 수 있습니다.

'RuntimeError: A QApplication instance already exists.'

인수 전달에 대한 제안이 감사합니다.

+0

IPython 터미널에서 Qt 프로그램을 * 실행하려고합니까? 그렇다면 명령 행 인수는 프로그램에 어떤 의미가 있습니까? –

+0

예 - 감사합니다. 나는 지난 3 시간 동안 문서를 보는 데 많은 시간을 보낸 후에이 결론에 도달했고, 귀하의 의견을 읽은 후에는 Enthought가 설정 한 IDLE 셸에서 그것을 시도했고, 내가 원하는 것을 수행하는 것으로 보입니다. Qt를 배우는 동안 Canopy Code Editor 대신 IDLE을 사용하는 것을 기억해야합니다. – user2541559

+0

명령 줄에서 실행할 수도 있습니다 :'python my_file.py' 그 방법은 당신이 코드를 작성하는 것과 상관 없습니다 (모든 텍스트 편집기, IDLE, 뭐든간에) –

답변

1

두 가지 별개의 문제 :

1) 명령 줄 인수를 전달 : 당신은 아마다시피 당신이 캐노피 편집기에서 "실행"명령을 수행 할 때, 그것은 않습니다 모두가 IPython % 실행 마법 명령 문제입니다. IPython 쉘에 동일한 명령을 입력하고 프로그램에 표시되는 명령 행 매개 변수를 입력 할 수 있습니다. 또는 키 입력을 저장하려면이 자동 생성 실행 명령을 한 번 실행 한 다음 IPython 쉘의 위쪽 화살표를 눌러 자동 생성 % 실행 명령을 호출 한 다음 파일 이름 뒤에 매개 변수를 입력하고 Enter 키를 누릅니다.

%run pathtoprog/myprogrampy p1 p2 p3 

우리는 (Enthought) 당신이 "매개 변수와 함께 실행"모두의 장점을 가질 수 있도록 명령 줄 매개 변수에 대한 설정을 추가하는 것을 고려하고있다 :이 같은 IPython 마법 명령을하게 될 겁니다 세계.

2) 기존 QApplication : 기본적으로 Canopy의 IPython은 IPython의 대화 형 Pylab 모드에서 Qt 백엔드로 실행됩니다. 이것을 원하지 않는다면 Canopy Preferences/Python 메뉴에서 Pylab 모드를 비활성화하거나 대화식 대신 Pylab 모드를 Inline (matplotlib의 경우)으로 변경할 수 있습니다.

유연성이 극대화되면서, (matplotlib에서와 같이) QApplication이 이미 존재하는지 여부를 확인하는 로직을 도입하고, 존재하는 경우이를 사용하고, 존재하지 않을 경우 생성합니다.

관련 문제