4

いくつかのボタンとプロットを含むメイン ウィンドウがあります。Qt Designer を使用して、ファイル メニューを追加しました。ここで、アプリを実行すると、すべて問題なく、典型的なメニュー バーが表示されます。問題は、メニュー バーをクリックしてアクションを実行したい、つまり、既定のブラウザーでインターネット Web ページを開きたいということです。誰かが私を助けることができますか?

これは、Qt Designer の pyuic4 で生成されたコードです (ファイル メニューのコードのみを示します)。

self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1445, 21))
self.menubar.setObjectName(_fromUtf8("menubar"))
self.menuFile = QtGui.QMenu(self.menubar)
self.menuFile.setObjectName(_fromUtf8("menuFile"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar)
self.actionFsa_format = QtGui.QAction(MainWindow)
self.actionFsa_format.setObjectName(_fromUtf8("actionFsa_format"))
self.menuFile.addAction(self.actionFsa_format)
self.menubar.addAction(self.menuFile.menuAction())

ご覧のとおり、ファイル メニューと、actionFsa_format アクションを含むツール ボタンがあります。これをクリックして外部 URL を開きたい。

4

1 に答える 1

8

アクションのトリガーされたシグナルをハンドラーに接続する必要があります。

したがって、__init__メイン ウィンドウの で、次のようにします。

self.ui.actionFsa_format.triggered.connect(self.openUrl)

そして、あなたのopenUrl方法は次のようになります:

def openUrl(self):
    url = QtCore.QUrl('http://some.domain.com/path')
    if not QtGui.QDesktopServices.openUrl(url):
        QtGui.QMessageBox.warning(self, 'Open Url', 'Could not open url')
于 2014-03-26T20:04:21.923 に答える