转载请著名出处,谢谢。:)
先直接上源码,待会再一步步解释:
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次托盘图标。):
需要注意的一点就是, 托盘图标弹出的信息小窗口被点击一下之后就会消失。
我画个箭头只是怕图标太小了你们看不清在哪儿。。
文章完-