2013-10-20 2 views
1

Я недавно смотрел дистрибутив Enthought iPython. Сегодня я решил посмотреть, могу ли я запустить некоторые програмы Qt GUI и был успешным после внесения незначительных изменений. Простой пример:Enthought Canopy - передача sys.argv из программы PySide Qt

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

Вы пытаетесь запустить Qt-программу из * внутри * IPython-терминала? Если да, то как аргументы командной строки могут иметь какое-либо значение для вашей программы? –

+0

Да - спасибо. Я пришел к такому выводу, потратив большую часть последних 3 часов на просмотр документации, и после прочтения вашего комментария попробовал его в оболочке IDLE, которую Enthought также настраивает, и, похоже, делает то, что я хочу оттуда. Я просто должен помнить, чтобы использовать IDLE вместо редактора кода Canopy, изучая Qt. – user2541559

+0

Вы также можете просто запустить из командной строки: 'python my_file.py' Таким образом, неважно, на что вы пишете свой код (любой текстовый редактор, IDLE, что угодно) –

ответ

1

два отдельных вопроса:

1) Передача аргументов командной строки: Как вы, наверное, заметили, когда вы делаете команду «Выполнить» из редактора Canopy, все это делает выдайте% запустить магическая команда IPython. Вы можете ввести ту же команду в оболочке IPython, плюс параметры командной строки, которые ваша программа увидит. Или, чтобы сохранить нажатия клавиш, выполните эту автоматическую команду «Выполнить» один раз, затем нажмите «Стрелка вверх» в оболочке IPython, чтобы вызвать эту автоматически генерируемую команду% run, затем введите свои параметры после имени файла и нажмите «Ввод». Вы будете в конечном итоге с волшебной команды IPython, как это:

%run pathtoprog/myprogrampy p1 p2 p3 

Мы (Enthought) рассматривают добавление настройки для параметров командной строки, так что вы могли бы сделать «Запуск с параметрами» и иметь лучшее из обоих миры.

2) Существующий QApplication: по умолчанию IP-терминал Canopy работает в интерактивном режиме Pylab в IPython с бэкендом Qt. Если вы этого не хотите, вы можете просто отключить режим Pylab в меню Canopy Preferences/Python или изменить режим Pylab на Inline (для matplotlib) вместо Interactive.

Для обеспечения максимальной гибкости, с немного большей работой, вы можете (в качестве matplotlib) ввести логику, которая проверяет, существует ли QApplication, использовать ее, если она существует, и создать ее, если она не работает.

Смежные вопросы