1

Qt GUIにPySideを使用するプロジェクトに奇妙なバグがあり、それに応じて、環境をセットアップするより単純なコードでテストしようとしています。

これが私がテストしているコードです:https ://stackoverflow.com/a/6906552/130164

シェル()から起動すると、python test.py完全に機能します。ただし、そのスクリプトをSpyderで実行すると、次のエラーが発生します。

Traceback (most recent call last):
  File "/home/test/Desktop/test/test.py", line 31, in <module>
    app = QtGui.QApplication(sys.argv)
RuntimeError: A QApplication instance already exists.

それが役立つ場合は、次の警告も表示されます。

/usr/lib/pymodules/python2.6/matplotlib/__init__.py:835: UserWarning:  This call to matplotlib.use() has no effect
because the the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

Spyderからではなく、シェルから起動したときにそのコードが機能するのはなぜですか?


更新: Mataは、SpyderがQtを使用しているために問題が発生すると回答しましたが、これは理にかなっています。今のところ、「外部システム端末で実行」オプションを使用してSpyderで実行を設定しました。これにより、エラーは発生しませんが、デバッグもできません。Spyderには、これに対する組み込みの回避策がありますか?

4

4 に答える 4

2

これSpyderQtアプリケーションなので、独自に起動しますQApplication。同じプロセスでQApplication存在できるのは 1 つだけです。そのため、最初のエラーが発生します。

Sypderも使用してmatplotlibおり、おそらく、前述のモジュールの一部が既にインポートされているため、2 番目のエラーが発生します。

QApplicationしたがって、そのように使用する場合、独自のものを作成したり、呼び出したりすることはできませんmatplotlib.use()tryまたは、これらの呼び出しを/でラップするとうまくいくかもしれませんexcept

于 2012-05-22T22:52:59.043 に答える
1

アプリケーションをインタラクティブなコンソールに起動しようとすると、Spyder では機能しません。そのコンソールは、いくつかの科学ライブラリ、自動的にshow()matplotlib の図、およびその他のいくつかの詳細をインポートするように特別に構成されているためです。詳細については、Spyder コンソールプロンプトscientificで入力してください。その結果、事実上、Qt アプリケーション イベント ループが既にそこで実行されています。

アプリケーションを Spyder 内で実行するには:

  1. Spyder が PyQt ではなく PySide で外部コンソールを開くように設定されていることを確認してください。これは、[ツール] > [設定] > [コンソール] > [外部モジュール] > [Qt-Python バインディング ライブラリの選択] から設定できます。
  2. エディターでスクリプトをアクティブにした状態で、ヒットF6して [実行設定] ダイアログを開きます。現在のインタラクティブ インタープリターで実行する代わりに、[新しい専用 Python インタープリターで実行] ラジオ ボタンを選択します。をクリックしOKます。を押してスクリプトを実行しますF5。を押してスクリプトをデバッグしますCtrl+F5
于 2013-06-29T04:17:31.470 に答える