2014-12-17 1 views
1

Пользователь Canopy узнает о PySide. Когда я запускаю демо-код ниже, QApplication жалуется, что цикл событий уже запущен. 'Получение приложения PySide Hello для работы под Canopy

import sys 
from PySide.QtCore import * 
from PySide.QtGui import * 


# Create a Qt application 
#app = QApplication(sys.argv) #QApplication complains an instance already exists 
app = QApplication.instance() #So we just ask for the instance. 

#app.aboutToQuit.connect(app.deleteLater) 
# Create a Label and show it 
label = QLabel("Hello World") 
label.show() 
# Enter Qt application main loop 
app.exec_() 
sys.exit() 

Как я могу получить этот простой код для запуска?

+0

Он может работать в отдельном процессе. Я бы попытался перезагрузить свой компьютер и посмотреть, не произойдет ли ошибка. – twasbrillig

+0

ОК, я сделал перезагрузку, но та же проблема. QApplication жалуется, что цикл событий уже запущен. –

+0

Я отключил Canopy использование PyLab в настройках Canopy, и код запускается сейчас. Однако я ненавижу отказаться от PyLab в Canopy. Должен быть способ обойти это. –

ответ

3

Да, Pylab - это режим IPython, который запускает цикл событий для интерфейса IPython, чтобы вы могли взаимодействовать в командной строке IPython с вашим графическим интерфейсом.

Вот простой пример кода, который будет работать с Pylab или без него.

import sys 
from PySide import QtGui 
app = QtGui.QApplication.instance() 
standalone = app is None 
if standalone: 
    app = QtGui.QApplication(sys.argv) 
wid = QtGui.QWidget() 
wid.resize(250,150) 
wid.setWindowTitle('Simple') 
wid.show() 
if standalone: 
    sys.exit(app.exec_()) 
else: 
    print "We're back with the Qt window still active" 
+0

Спасибо. Только то, что мне было нужно. –

+0

Для записи добавлено это в базу знаний Canopy: https://support.enthought.com/entries/64158730-Running-a-Qt-program-from-the-Canopy-GUI –

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