PyQt: 如何从菜单项加载URL
我有一个主窗口,上面有一些按钮和一个图表。我使用Qt Designer添加了一个文件菜单。现在,当我运行我的应用程序时,一切都很好,我可以看到一个典型的菜单栏。问题是,我想点击菜单栏并执行一个操作——我想用默认浏览器打开一个网页。有人能帮我吗?
这是用pyuic4从Qt Designer生成的代码(我只展示文件菜单的代码):
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的操作。我想点击这个按钮,然后打开一个外部网址。
1 个回答
8
你需要把你的动作的 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')