PyQt icon创建,显示 PyQt4 -- 系统托盘图标设置

http://www.cnblogs.com/obbo/articles/2718426.html

痞老板

PyQt4 -- 系统托盘图标设置

转载请著名出处,谢谢。:)

先直接上源码,待会再一步步解释:

from PyQt4 import QtGui
import sys

app = QtGui.QApplication(sys.argv)

w = QtGui.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()

tuopan = QtGui.QSystemTrayIcon(w)
icon1 = QtGui.QIcon('tuopan.jpg')
tuopan.setIcon(icon1)
tuopan.show()
tuopan.showMessage("haha","content",icon=3)
#如果不show(), 便不会显示, 后面的showMessage也会失效.

def message():
    print ("弹出的信息被点击了")
    
tuopan.messageClicked.connect(message)
# 弹出的信息被点击就会调用messageClicked连接的函数

def a():
    print ("系统托盘图标被点击了")
    
tuopan.activated.connect(a)
# 在系统托盘区域的图标被点击就会触发activated连接的函数(此例中是a函数)

sys.exit(app.exec_())

代码中用到的图片是tuopan.jpg

程序运行后的结果(有托盘图标还有提示信息哦~):

下面我们开始讲解每一行的含义:

from PyQt4 import QtGui
import sys

从PyQt4模块中导入 QtGui。因为我们需要用到里面的控件

导入sys,因为我们需要里面的一个退出函数(不然程序就没法退出,只能用任务管理器强制关闭了)。

app = QtGui.QApplication(sys.argv)

新建了一个QApplication,赋值给app变量。  sys.argv里面存储的是命令行启动程序的时候传过来的参数,虽然很少用命令行启动程序。但还是加上的好。

每个PyQT4程序都必须创建这个对象。負責管理 Qt 资源、控制執行流程和有的沒的例行事務。

w = QtGui.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()

QtGui.QWidget控件是PtQt4里, 所有用户界面对象的基础类。默认构造函数没有父. 一个控件没有父, 就被称为窗口

这里的resize是设置窗口的宽为250, 高为150.

move是把这个窗口移动到屏幕上x坐标300, y坐标300的地方。

setWindowTiele是设置这个窗口的标题

最后一行调用了show(),这样才能显示,如果不调用的话是不显示的。

tuopan = QtGui.QSystemTrayIcon(w)

新建了一个QtGui.QSystemTrayIcon对象,因为它提供了方法让我们可以在系统托盘处显示图标。

并赋值给了tuopan变量。

icon1 = QtGui.QIcon('tuopan.jpg')

创建了一个QIcon对象。载入了这个图片。    此例中图片和代码文件是同目录的,所以直接写文件名就行了,如果不在同一个目录记得加上路径。

tuopan.setIcon(icon1)

这里才是真正把图片设置为系统托盘显示的图片。

tuopan.show()

这里调用了show()方法。如果不调用这个就不会显示系统托盘……

tuopan.showMessage("haha","content",icon=3)

调用showMessage方法可以创建一个托盘图标的信息提示。

第1个参数是标题。

第2个参数是信息内容.

第3个参数是显示的图标。(就是显示下图中那个圆形红色叉叉图标)

 第3个参数有4个可选值。

分别是0,1,2,3

0是指没有图标:

1是指信息图标:

2是指警告图标:

3是指错误图标:

没有其他可选值了。(我也很蛋疼……要是能自定义多好....)

官方文档截图如下:

 文档的地址:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qsystemtrayicon.html#showMessage

对象的事件

QSystemTrayIcon对象一共有2种事件,如下。
def message():
print ("弹出的信息被点击了")
tuopan.messageClicked.connect(message)

弹出的信息弹框被点击,  就会调用messageClicked连接的函数

def a():
print ("系统托盘图标被点击了")
tuopan.activated.connect(a)

在系统托盘区域的图标被点击,  就会触发activated连接的函数(此例中是a函数)

见下图(我点击了一下弹窗,并点击了5次托盘图标。):

 需要注意的一点就是, 托盘图标弹出的信息小窗口被点击一下之后就会消失。

我画个箭头只是怕图标太小了你们看不清在哪儿。。

 文章完-

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏熊二哥

Javascript快速入门(下篇)

Javascript, cheer up。 ? ? Ajax:其通过在Web页面与服务器之间建立一个额外的处理层,这个处理层就被称为Ajax引擎,它解释来自用...

2087
来自专栏DeveWork

自定义WordPress 标签云小工具相关参数

相信你知道WordPress 标签云widget(小工具)是什么,如果你的WordPress 主题支持小工具,就可以在后台启用标签云小工具,该小工具不仅能展示标...

2578
来自专栏君赏技术博客

Jekyll-Admin-Mac-模板处理

制作导航条 使用网络框架Alamofire 使用 SwiftyJSON iOS10开启启用 HTTP 请求 使用 ObjectMapper ...

1153
来自专栏技术墨客

React——Flow代码静态检查 转

Flow是Facebook开源的静态代码检查工具,他的作用是在运行代码之前对React组件以及Jsx语法进行静态代码的检查以发现一些可能存在的问题。Flow可以...

1151
来自专栏大前端开发

从编程小白到全栈开发:响应用户的操作

咳嗽连续咳了一个多月,蓝瘦,我都快要忘记更新文章了...还好一个读友提醒我怎么好久没更新了,我才提起一口气,嘎吱嘎吱的重新转起我这磨损严重的脑袋来。

974
来自专栏五毛程序员

ActionBar开启Overlay Mode(覆盖模式)

3685
来自专栏极客编程

Cheerio,服务端的JQuery。

cheerio 是nodejs特别为服务端定制的,能够快速灵活的对JQuery核心进行实现。它工作于DOM模型上,且解析、操作、呈送都很高效。

1111
来自专栏前端下午茶

一个骚气的文章目录自动生成器了解一下

这个插件根据选定的目录内容中的 h1, h2, h3, h4, h5, h6 标签来自动生成目录插入到选定的目录容器中,并且提供一个漂亮的样式效果

1772
来自专栏CIT极客

【奇淫巧技】成为网站开发工程师的捷径!

3879
来自专栏向治洪

RecyclerView notifyItem闪烁的问题

之前我们做点赞,用listview做的话,就是在item实现点击后,写一个scal动画,不过现在都转到RecyclerView,那么要做这种效果于是做了一个no...

3525

扫码关注云+社区

领取腾讯云代金券