5

PythonコンソールとPythonスクリプトを使用して、同じコードで異なる動作を経験しています。

コードは次のとおりです。

import gtk
import webkit
win = gtk.Window()
win.show()
web = webkit.WebView()
win.add(web)
web.show()
web.open("http://www.google.com")

Pythonコンソールでコードを実行すると、出力はgoogleメインページを含む新しいフレームになります。

コードをスクリプトとして実行すると、結果は無効なフレームになります。非常に速く閉じますが、遅延機能を使用しても、Webkitはフレームに追加されません。

どうしてそれは可能ですか?

さらに、PyDev IDEを使用すると、「未解決のインポート:gtk」というフラグが立てられますが、プロジェクトを実行すると、プログラムはコンパイルの問題なく起動します。正常ですか?

4

2 に答える 2

8

追加

gtk.main()

スクリプトの最後まで。これにより、gtkイベントループが開始されます。


import gtk
import webkit

class App(object):
    def __init__(self):
        win = gtk.Window()
        win.connect("destroy", self.destroy)
        web = webkit.WebView()
        web.open("http://www.google.com")
        win.add(web)
        web.show()
        win.show()
    def destroy(self, widget, data = None):
        gtk.main_quit()
app = App()
gtk.main()
于 2012-11-24T14:04:25.573 に答える
1

私の推測では、スクリプトの最後にプログラムが閉じている間、コンソールはPythonセッションを開いたままにします。スクリプトを閉じると、スクリプトで作成されたすべてのものが取得されます。

この理論をテストするために何か:コンソールに「exit」と入力すると、同じ方法でインターフェイスがシャットダウンするのがわかりますか?raw_inputその場合は、スクリプトを開いたままにしておくことができるコード(たとえば、のような一時停止)を考えてください。

幸運を!

于 2012-11-24T14:00:20.430 に答える