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. Я хочу нажать на это и открыть внешний URL.

1 ответ

Решение

Вам нужно подключить сработавший сигнал вашего действия к обработчику.

Так что в __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')
Другие вопросы по тегам