2011-07-21 9 views
2

新しいQApplicationインスタンスを作成して使用することは可能ですか?前のインスタンスが終了した後にQApplicationを再作成する

+1

シンプルなケースで試しましたか?私はしたし、私は間違いなくそうすることができます。私はこれを使ってテストアプリケーションを連続して実行しています...だから、私はそう言うでしょう。 – vrince

答えて

0

この質問をすることを論じているように見えます:代わりにはQApplicationの新しいインスタンスを作成するのではなく、あなたが独自のウィンドウを持つ新しいスレッドを作成することができ、あなたは別のはQApplicationのと同じようにそれを扱う

Problems with Multiple QApplications

1つのプログラム内から。

+2

他の質問には微妙な違いがあると私は信じています。それは一度に1つのQApplicationをアクティブにしたいだけで、前のものが破棄された後に新しいものを作成するように思えます。 –

+0

@Judge Maygarden - それは私が達成しようとしているものです。 – mgamer

3

はい、前のインスタンスが破棄された後に新しいQApplicationを作成できます。私はPyQt4を使ってWindowsでこれを確認しました。以下のプログラムは、空のウィンドウを表示します。最初のウィンドウを閉じると、最初のQApplicationが破棄され、2番目の空のウィンドウが表示される2番目のQApplicationが作成されます。私はdel appステートメントがなければ問題があることに注意してください。これは、C++のQApplicationでdeleteを使用するのと同じです。スタックの代わりにヒープにQApplicationインスタンスを割り当ててください。

from PyQt4 import QtCore, QtGui 
import sys 

app = QtGui.QApplication(sys.argv) 
window = QtGui.QWidget() 
window.show() 
app.exec_() 
del app # force garbage collection of the first QApplication 

app = QtGui.QApplication(sys.argv) 
window = QtGui.QWidget() 
window.show() 
app.exec_() 
+0

このようなマルチプルURLをレンダリングする方法はありますか? http://blog.sitescraper.net/2010/06/scraping-javascript-webpages-in-python.html –

+0

これは少し話題です。ただし、複数のQApplicationインスタンスは必要ありません。複数のウェブビューを作成するだけです。 –

関連する問題