5

私は Qt (PyGTK から来ている) の領域に住み始めたばかりで、PySide を使用しています。だから私はスタック交換の別の答えでこの素晴らしい例を見つけました。

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

app = QApplication(sys.argv)

web = QWebView()
web.settings().setAttribute(
  QWebSettings.WebAttribute.DeveloperExtrasEnabled, True)
# or globally:
# QWebSettings.globalSettings().setAttribute(
#     QWebSettings.WebAttribute.DeveloperExtrasEnabled, True)

web.load(QUrl("http://www.google.com"))
web.show()

inspect = QWebInspector()
inspect.setPage(web.page())
inspect.show()

sys.exit(app.exec_())

私の質問は次のとおりです。インスペクターを新しいウィンドウではなく同じウィンドウに表示するにはどうすればよいですか? QWebInspector をメイン ウィンドウ内の別のウィジェット (たとえば、vbox) に追加する必要があることを理解しています。知りたいのは、そのイベントをコンテキスト メニューの "Inspect" トリガーの信号に接続する方法です。PyGTK では .connect() を使用する必要がありますが、この特定のアクションに適した SIGNAL が見つかりません。

お時間をいただきありがとうございます

4

1 に答える 1

4

コンテキスト メニューが機能するために特別なことをする必要はありません。インスペクタ ウィジェットをレイアウトに追加するだけで、hide()それを開始できます。デフォルトのコンテキスト メニュー アクションは、show()必要に応じてインスペクターで実行できます。

少しトリッキーな問題は、インスペクターが表示された後に再び非表示にする方法です。これに対応するコンテキスト メニュー項目がないようです。

以下のデモ スクリプトは、インスペクタを非表示/表示するためのキーボード ショートカットを作成するだけです。

from PySide import QtGui, QtCore, QtWebKit

class Window(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.view = QtWebKit.QWebView(self)
        self.view.settings().setAttribute(
            QtWebKit.QWebSettings.WebAttribute.DeveloperExtrasEnabled, True)
        self.inspector = QtWebKit.QWebInspector(self)
        self.inspector.setPage(self.view.page())
        self.inspector.hide()
        self.splitter = QtGui.QSplitter(self)
        self.splitter.addWidget(self.view)
        self.splitter.addWidget(self.inspector)
        layout = QtGui.QVBoxLayout(self)
        layout.addWidget(self.splitter)
        QtGui.QShortcut(QtGui.QKeySequence('F7'), self,
            self.handleShowInspector)

    def handleShowInspector(self):
        self.inspector.setShown(self.inspector.isHidden())

if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.view.load(QtCore.QUrl('http://www.google.com'))
    window.show()
    sys.exit(app.exec_())
于 2012-11-16T01:30:57.577 に答える