纳速健身

 找回密码
 注册

扫一扫,访问微社区

查看: 27|回复: 0

[Python] [pyqt5]打开文件、文件夹、外部链接的几种方法

[复制链接]
发表于 2021-1-7 17:13:22 | 显示全部楼层 |阅读模式
Pyqt 触发一个事件,打开外部链接,我找到了这个方法,供大家参考

1. QDesktopServices 的openUrl 方法

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


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

webbrowser提供了三种方法

import webbrowser
webbrowser.open(url, new=0, autoraise=True)
webbrowser.open_new(url)
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. # Form implementation generated from reading ui file 'URL2.ui'
  3. #
  4. # Created: Fri Feb 06 10:03:54 2015
  5. #      by: PyQt4 UI code generator 4.10.3
  6. #
  7. # WARNING! All changes made in this file will be lost!

  8. from PyQt4 import QtCore, QtGui

  9. try:
  10.     _fromUtf8 = QtCore.QString.fromUtf8
  11. except AttributeError:
  12.     def _fromUtf8(s):
  13.         return s

  14. try:
  15.     _encoding = QtGui.QApplication.UnicodeUTF8
  16.     def _translate(context, text, disambig):
  17.         return QtGui.QApplication.translate(context, text, disambig, _encoding)
  18. except AttributeError:
  19.     def _translate(context, text, disambig):
  20.         return QtGui.QApplication.translate(context, text, disambig)

  21. class Ui_MainWindow(object):
  22.     def setupUi(self, MainWindow):
  23.         MainWindow.setObjectName(_fromUtf8("MainWindow"))
  24.         MainWindow.resize(270, 313)
  25.         self.centralwidget = QtGui.QWidget(MainWindow)
  26.         self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
  27.         self.label = QtGui.QLabel(self.centralwidget)
  28.         self.label.setGeometry(QtCore.QRect(80, 140, 101, 41))
  29.         self.label.setOpenExternalLinks(True)
  30.         self.label.setObjectName(_fromUtf8("label"))
  31.         self.openUrl = QtGui.QPushButton(self.centralwidget)
  32.         self.openUrl.setGeometry(QtCore.QRect(70, 40, 101, 21))
  33.         self.openUrl.setObjectName(_fromUtf8("openUrl"))
  34.         self.webbrowser = QtGui.QPushButton(self.centralwidget)
  35.         self.webbrowser.setGeometry(QtCore.QRect(70, 90, 101, 21))
  36.         self.webbrowser.setObjectName(_fromUtf8("webbrowser"))
  37.         MainWindow.setCentralWidget(self.centralwidget)
  38.         self.menubar = QtGui.QMenuBar(MainWindow)
  39.         self.menubar.setGeometry(QtCore.QRect(0, 0, 270, 23))
  40.         self.menubar.setObjectName(_fromUtf8("menubar"))
  41.         MainWindow.setMenuBar(self.menubar)
  42.         self.statusbar = QtGui.QStatusBar(MainWindow)
  43.         self.statusbar.setObjectName(_fromUtf8("statusbar"))
  44.         MainWindow.setStatusBar(self.statusbar)

  45.         self.retranslateUi(MainWindow)
  46.         QtCore.QMetaObject.connectSlotsByName(MainWindow)

  47.     def retranslateUi(self, MainWindow):
  48.         MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
  49.         self.label.setText(_translate("MainWindow", "lalel属性效果", None))
  50.         self.openUrl.setText(_translate("MainWindow", "openUrl效果", None))
  51.         self.webbrowser.setText(_translate("MainWindow", "webbrowser效果", None))





  52. class OpenUrl(QtGui.QMainWindow):
  53.     def __init__(self):
  54.         super(OpenUrl, self).__init__()
  55.         self.UI=Ui_MainWindow()
  56.         self.UI.setupUi(self)
  57.         self.setWindowTitle(u'Pyqt打开外部链接')
  58.         self.connect(self.UI.openUrl, QtCore.SIGNAL('clicked()'), self.openUrl)
  59.         self.connect(self.UI.webbrowser, QtCore.SIGNAL('clicked()'), self.webbrowser)
  60.         self.UI.label.setText(u'<a href="http://www.qq.com" style="color:#0000ff;"><b> 腾 讯 首 页 </b></a>')

  61.     def openUrl(self):
  62.         QtGui.QDesktopServices.openUrl(QtCore.QUrl('http://www.hao123.com'))

  63.     def webbrowser(self):
  64.         import webbrowser
  65.         webbrowser.open('http://www.sina.com.cn/')


  66. if __name__ == "__main__":
  67.     import sys
  68.     app = QtGui.QApplication(sys.argv)
  69.     MainWindow = OpenUrl()
  70.     MainWindow.show()
  71.     sys.exit(app.exec_())
复制代码



效果:


061022452033641.png

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表