Pyqt 打开外部链接的几种方法

Pyqt 触发一个事件,打开外部链接,我找到了这个方法,供大家参考

1. QDesktopServices 的openUrl 方法

1 QtGui.QDesktopServices.openUrl(QtCore.QUrl('http://www.hao123.com'))

2.Python 自带的webbrowser 浏览器控制模块

webbrowser提供了三种方法

1 import webbrowser 
2 webbrowser.open(url, new=0, autoraise=True)
3 webbrowser.open_new(url)
4 webbrowser.open_new_tab(url)

3.部分控件的Link属性链接

Pyqt有几个控件带有 setOpenExternalLinks ,  如 QTextLabel  、  QTextBrowser  等

当 setOpenExternalLinks 值为TURE 表示可通过html 添加 A 标签打开外部链接, 如设置:

self.label.setOpenExternalLinks(True)
1 self.label.setText(_translate("MainWindow", "<html><head/><body><p><a href="http://www.baidu.com"><span style=" text-decoration: underline; color:#0000ff;">百度首页</span></a></p></body></html>", None))

示例代码与效果:

 1 # -*- coding: utf-8 -*-
 2 
 3 # Form implementation generated from reading ui file 'URL2.ui'
 4 #
 5 # Created: Fri Feb 06 10:03:54 2015
 6 #      by: PyQt4 UI code generator 4.10.3
 7 #
 8 # WARNING! All changes made in this file will be lost!
 9 
10 from PyQt4 import QtCore, QtGui
11 
12 try:
13     _fromUtf8 = QtCore.QString.fromUtf8
14 except AttributeError:
15     def _fromUtf8(s):
16         return s
17 
18 try:
19     _encoding = QtGui.QApplication.UnicodeUTF8
20     def _translate(context, text, disambig):
21         return QtGui.QApplication.translate(context, text, disambig, _encoding)
22 except AttributeError:
23     def _translate(context, text, disambig):
24         return QtGui.QApplication.translate(context, text, disambig)
25 
26 class Ui_MainWindow(object):
27     def setupUi(self, MainWindow):
28         MainWindow.setObjectName(_fromUtf8("MainWindow"))
29         MainWindow.resize(270, 313)
30         self.centralwidget = QtGui.QWidget(MainWindow)
31         self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
32         self.label = QtGui.QLabel(self.centralwidget)
33         self.label.setGeometry(QtCore.QRect(80, 140, 101, 41))
34         self.label.setOpenExternalLinks(True)
35         self.label.setObjectName(_fromUtf8("label"))
36         self.openUrl = QtGui.QPushButton(self.centralwidget)
37         self.openUrl.setGeometry(QtCore.QRect(70, 40, 101, 21))
38         self.openUrl.setObjectName(_fromUtf8("openUrl"))
39         self.webbrowser = QtGui.QPushButton(self.centralwidget)
40         self.webbrowser.setGeometry(QtCore.QRect(70, 90, 101, 21))
41         self.webbrowser.setObjectName(_fromUtf8("webbrowser"))
42         MainWindow.setCentralWidget(self.centralwidget)
43         self.menubar = QtGui.QMenuBar(MainWindow)
44         self.menubar.setGeometry(QtCore.QRect(0, 0, 270, 23))
45         self.menubar.setObjectName(_fromUtf8("menubar"))
46         MainWindow.setMenuBar(self.menubar)
47         self.statusbar = QtGui.QStatusBar(MainWindow)
48         self.statusbar.setObjectName(_fromUtf8("statusbar"))
49         MainWindow.setStatusBar(self.statusbar)
50 
51         self.retranslateUi(MainWindow)
52         QtCore.QMetaObject.connectSlotsByName(MainWindow)
53 
54     def retranslateUi(self, MainWindow):
55         MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
56         self.label.setText(_translate("MainWindow", "lalel属性效果", None))
57         self.openUrl.setText(_translate("MainWindow", "openUrl效果", None))
58         self.webbrowser.setText(_translate("MainWindow", "webbrowser效果", None))
59 
60 
61 
62 
63 
64 class OpenUrl(QtGui.QMainWindow):
65     def __init__(self):
66         super(OpenUrl, self).__init__()
67         self.UI=Ui_MainWindow()
68         self.UI.setupUi(self)
69         self.setWindowTitle(u'Pyqt打开外部链接')
70         self.connect(self.UI.openUrl, QtCore.SIGNAL('clicked()'), self.openUrl)
71         self.connect(self.UI.webbrowser, QtCore.SIGNAL('clicked()'), self.webbrowser)
72         self.UI.label.setText(u'<a href="http://www.qq.com" style="color:#0000ff;"><b> 腾 讯 首 页 </b></a>')
73 
74     def openUrl(self):
75         QtGui.QDesktopServices.openUrl(QtCore.QUrl('http://www.hao123.com'))
76 
77     def webbrowser(self):
78         import webbrowser
79         webbrowser.open('http://www.sina.com.cn/')
80 
81 
82 if __name__ == "__main__":
83     import sys
84     app = QtGui.QApplication(sys.argv)
85     MainWindow = OpenUrl()
86     MainWindow.show()
87     sys.exit(app.exec_())

效果:

原文地址:https://www.cnblogs.com/dcb3688/p/4276122.html