1

PyQt4 の QWebView で基本的なことを試しています。URLをロードしたいだけです。奇妙なことに、QWebView を関数呼び出しに入れると機能しませんが、インラインの場合は機能します。

したがって、次のコードは期待どおりに機能します。

if __name__ == '__main__':
    app = QApplication(sys.argv)
    web = QWebView()
    web.load(QUrl('http://www.google.com'))
    web.setFixedSize(500, 500)
    web.show()
    sys.exit(app.exec_())

ただし、以下に示すように QWebView コードを関数に移動すると、Web ビューが開きません。代わりに、アプリケーションがハングしているように見えます。

def openPage():
    web = QWebView()
    web.load(QUrl('http://www.google.com'))
    web.setFixedSize(500, 500)
    web.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    openPage()
    sys.exit(app.exec_())

ここで何が起こっているのですか?これは意味がないようです。

4

1 に答える 1

1

Web ビュー オブジェクトをローカル変数にopenPageバインドしますweb。変数がスコープ外になると (関数が戻ると)、Web ビューは自動的に破棄されます。returnおそらく次のようにして、ビューへの参照を保持する必要があります。

def openPage():
    web = QWebView()
    web.load(QUrl('http://www.google.com'))
    web.setFixedSize(500, 500)
    web.show()
    return web

if __name__ == '__main__':
    app = QApplication(sys.argv)
    web = openPage()
    sys.exit(app.exec_())
于 2013-11-12T07:44:32.890 に答える