2014-03-26 36 views
2

我有一個主窗口,有一些按鈕和一個圖。我添加了一個使用Qt Designer的文件菜單。現在,如果我運行我的應用程序,一切都很好,我可以看到一個典型的菜單欄。問題是,我想單擊菜單欄並執行操作 - 我想用默認瀏覽器打開Internet網頁。有人能幫我嗎?PyQt:如何從菜單項加載URL

這與Qt設計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操作。我想點擊這個並打開一個外部網址。

回答

4

您需要將您的動作的triggered信號連接到處理程序。

因此,在主窗口的__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') 
+1

謝謝你,現在我的應用程序運行。對於openUrl我使用以下代碼:def Open_url(self): import webbrowser webbrowser.open('http://www.appliedbiosystems.com/absite/us/en/home/support/software-community/tools-for-訪問-files.html') – Gianluca