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)
 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))

示例代码与效果:

 # -*- coding: utf-8 -*-

 # Form implementation generated from reading ui file 'URL2.ui'
#
# Created: Fri Feb 06 10:03:54 2015
# by: PyQt4 UI code generator 4.10.3
#
# WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig) class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(270, 313)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.label = QtGui.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(80, 140, 101, 41))
self.label.setOpenExternalLinks(True)
self.label.setObjectName(_fromUtf8("label"))
self.openUrl = QtGui.QPushButton(self.centralwidget)
self.openUrl.setGeometry(QtCore.QRect(70, 40, 101, 21))
self.openUrl.setObjectName(_fromUtf8("openUrl"))
self.webbrowser = QtGui.QPushButton(self.centralwidget)
self.webbrowser.setGeometry(QtCore.QRect(70, 90, 101, 21))
self.webbrowser.setObjectName(_fromUtf8("webbrowser"))
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 270, 23))
self.menubar.setObjectName(_fromUtf8("menubar"))
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName(_fromUtf8("statusbar"))
MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow", None))
self.label.setText(_translate("MainWindow", "lalel属性效果", None))
self.openUrl.setText(_translate("MainWindow", "openUrl效果", None))
self.webbrowser.setText(_translate("MainWindow", "webbrowser效果", None)) class OpenUrl(QtGui.QMainWindow):
def __init__(self):
super(OpenUrl, self).__init__()
self.UI=Ui_MainWindow()
self.UI.setupUi(self)
self.setWindowTitle(u'Pyqt打开外部链接')
self.connect(self.UI.openUrl, QtCore.SIGNAL('clicked()'), self.openUrl)
self.connect(self.UI.webbrowser, QtCore.SIGNAL('clicked()'), self.webbrowser)
self.UI.label.setText(u'<a href="http://www.qq.com" style="color:#0000ff;"><b> 腾 讯 首 页 </b></a>') def openUrl(self):
QtGui.QDesktopServices.openUrl(QtCore.QUrl('http://www.hao123.com')) def webbrowser(self):
import webbrowser
webbrowser.open('http://www.sina.com.cn/') if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = OpenUrl()
MainWindow.show()
sys.exit(app.exec_())

效果:

Pyqt 打开外部链接的几种方法的更多相关文章

  1. 2015.1.25 Delphi打开网址链接的几种方法

    Delphi打开网址链接的几种方法1.使用shellapi打开系统中默认的浏览器              首先需在头部引用 shellapi单元即在uses中添加shellapi,这里我们需要知道有 ...

  2. Delphi中打开网页连接的几种方法

    https://blog.csdn.net/zisongjia/article/details/69398143 正好要用,做个记录.Mark下. 使用了第一种 uses shellapi proce ...

  3. 痞子衡嵌入式:MCUXpresso IDE下将应用程序RW段分散链接的几种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下将应用程序RW段分散链接的几种方法. 早期的 MCU 芯片,一般都会嵌入内部 Flash 和 RAM,并且 ...

  4. 打开cad文件的几种方法

    转自原文 打开cad文件的几种方法 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeature ...

  5. Response.Redirect 打开新窗体的两种方法

    普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...

  6. 获取当前页面的所有链接的四种方法对比(python 爬虫)

    ''' 得到当前页面所有连接 ''' import requests import re from bs4 import BeautifulSoup from lxml import etree fr ...

  7. Response.Redirect 打开新窗口的两种方法

    一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...

  8. VS2005打开VS2008项目的2种方法

    vs2008支持.net3.5,而vs2005支持.net2.0,所以使用vs2005打开vs2008的项目,要确定你的项目是.net2.0的. 下面介绍2种方法: 方法1:用记事本打开.sln文件, ...

  9. Win7系统打开服务管理界面的几种方法汇总

    转自:https://www.jb51.net/os/windows/318465.html Win7服务管理包含了计算机操作系统和应用程序提供的所有服务,但是这么多服务并非总是用户所需的.比如打印机 ...

随机推荐

  1. 编码(Code)

    很遗憾,直接搜索Code或者编码是很难得找到这本书的,我也是无意中才接触到本书. 第一次读本书,对各方面的知识都不算很懂,觉得很多地方都写的太多浅显,好像本该就是这样子,一个编码系统说的那么麻烦干嘛, ...

  2. 12 哈希表相关类——Live555源码阅读(一)基本组件类

    12 哈希表相关类--Live555源码阅读(一)基本组件类 这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 本文由乌合之众 lym瞎编,欢迎转载 ...

  3. 9.4---集合子集(CC150)

    这题非常复杂.牛客网上对应的题目对结果要求比较苛刻,所以要调整. 整体思路是:先放进去一个,然后第二个来的时候插入到已有的,并且把自己也放进去. public static ArrayList< ...

  4. pycharm3.4 下svn 项目checkout&配置

    pycharm 社区版: 3.4 1. checkout 项目 注意,之前配置好:设置里面的一些配置:(以下勾勾不要勾上) 2. checkout 项目之后,做以下操作: vcs ->enabl ...

  5. Droid4x设置代理抓包

    Droid4x也是基于virtualbox+x86架构的   代理设置 设置->WIFI->鼠标按住WiredSSID选项不放->修改网络->显示高级选项->代理-> ...

  6. svn: E155004 'XX' is already locked

    Error:svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)svn: E155 ...

  7. IDEA 新建文件默认加入CVS

    是要先add,不过可以设置创建的文件都默认 add的.修改默认值看下图:打开系统设置,找到 Version Control 设置选项: 在 When files are created 选项中选择第二 ...

  8. POJ 1661

    http://poj.org/problem?id=1661 这是一道DP的题目,求最优解 上面的这一个题是对于那个重左边开始上的函数的解释 题目要求的是从最高掉下来的小时间,那么我们就可以求从最低处 ...

  9. Java for LeetCode 234 Palindrome Linked List

    解题思路: O(1)的空间复杂度,意味着不能通过开一个List来解决问题.我们可以把List分成前后两个部分,后半部分通过指针的相互赋值进行翻转即可. JAVA实现如下: public static ...

  10. CentOS新系统必做的几件事

    一.修改yum源 要知道国外的yum源是很慢的,为了提高效率,更变为网易yum源. 首先备份/etc/yum.repos.d/CentOS-Base.repo(系统默认源): mv /etc/yum. ...