文章转载请著名出处。
这篇文章教大家写PyQt4程序的时候 如何设置程序在系统托盘区域显示图标
系统托盘指的是这块区域:
(笔者用的是window7)
直接上源码:
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)
def message():
print ("弹出的信息被点击了")
tuopan.messageClicked.connect(message)
# 弹出的信息被点击就会调用messageClicked连接的函数
def a():
print ("系统托盘图标被点击了")
tuopan.activated.connect(a)
# 在系统托盘区域的图标被点击就会触发activated连接的函数(此例中是a函数)
sys.exit(app.exec_())
运行后的效果:
下面来详细讲解代码的意思。
from PyQt4 import QtGui
import sys
从PyQT4中 导入QtGui
导入sys是因为我们需要它的退出函数.
app = QtGui.QApplication(sys.argv)
每個 Qt GUI 程式都需要一個 ( 并且是唯一一个 ) QApplication,負責管理 Qt 資源、控制執行流程和有的沒的例行事務。
雖然很少會用 命令行 來启动 GUI 程式,還是得帶 sys.argv 參數來初始化它。
w = QtGui.QWidget()
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Simple')
w.show()
创建一个QWidget()控件,赋值给了w变量。
设置大小为宽250 高150
移动到屏幕上x:300 y:300坐标
并设置窗口标题为Simple
最后一行的show()方法是显示这个控件,如果不show(),它就不会显示在屏幕上。
tuopan = QtGui.QSystemTrayIcon(w)
这一行新建了一个QSystemTrayIcon对象,
我们想在系统托盘显示图标就必须创建它,因为它提供了方法让我们选择图片在系统托盘里显示。
参数w是他的父控件。 (记不记得前面我们创建了一个QWidget对象赋值给了w变量?)
然后赋值给了tuopan变量。
icon1 = QtGui.QIcon('tuopan.jpg')
第二行创建了一个QIcon对象,然后把他赋值给icon1,这个对象载入了名为tuopan.jpg的图片,图片是和代码文件同目录的,所以不用带路径。
tuopan.jpg图片的样子:
tuopan.setIcon(icon1)
我们用tuopan的setIcon方法来设置系统托盘图标。 上一行代码我们只是创建了一个QIcon对象而已,什么都没做。
tuopan.show()
调用对象的show()方法,调用后便会显示系统托盘。
如果不show(), 便不会显示, 后面的showMessage也会失效.
tuopan.showMessage("haha","content",icon=0)
showMessage()方法是用来显示托盘弹出来的信息的。 这个方法还有1个参数叫做msecs
第一个参数是标题
第二个参数是内容
第三个参数是显示的图标,如果为0,则是不显示任何图标。如下图:
还有3个可选值。分别是1,2,3. (官方文档的截图):
选择1,则代表是信息图标,如下图:
2:
3:
只有这3个,不能自定义。 T_T
文档网址:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qsystemtrayicon.html#MessageIcon-enum
对象的事件
这个对象 (QSystemTrayIcon)。 只有2个事件。 ( 不信?看文档:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qsystemtrayicon.html#showMessage )
分别是 messageClicked() 和 activated()
messageClicked() 如果有绑定处理函数,那么当弹出的信息(之前我们那个showMessage()) 被点击后会触发该函数
activated() 是当托盘图标被点击的时候触发所绑定的处理函数
def message():
print ("弹出的信息被点击了")
tuopan.messageClicked.connect(message)
上面代码中,messageClicked事件绑定 (或者说连接,很多书中喜欢说连接)了message函数。
如前面所说,当弹出的信息框被点击的时候就会触发messageClicked事件。
那个信息框被点击后就会消失。 如图:
【点击弹出的信息框前】 (这里我的showMessage函数的icon参数是1,所以会有那个三角感叹号图标。)
【点击后】:
( = = 图片中的其他东西请忽略掉就好。。)
def a():
print ("系统托盘图标被点击了")
tuopan.activated.connect(a)
同样, 这里也是一样。
看图(我先点了弹出来的信息框,然后点了好多次那个系统图标,所以会输出这么多行。):
如果还有哪里看不懂的欢迎留言 (我知道我写文章的功力很差,啊哈哈哈……)
本篇文章完。
这篇文章教大家写PyQt4程序的时候 如何设置程序在系统托盘区域显示图标
系统托盘指的是这块区域:
(笔者用的是window7)
直接上源码:
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)
def message(): print ("弹出的信息被点击了") tuopan.messageClicked.connect(message) # 弹出的信息被点击就会调用messageClicked连接的函数 def a(): print ("系统托盘图标被点击了") tuopan.activated.connect(a) # 在系统托盘区域的图标被点击就会触发activated连接的函数(此例中是a函数)
sys.exit(app.exec_())
下面来详细讲解代码的意思。
从PyQT4中 导入QtGuifrom PyQt4 import QtGui import sys
导入sys是因为我们需要它的退出函数.
app = QtGui.QApplication(sys.argv)
每個 Qt GUI 程式都需要一個 ( 并且是唯一一个 ) QApplication,負責管理 Qt 資源、控制執行流程和有的沒的例行事務。雖然很少會用 命令行 來启动 GUI 程式,還是得帶 sys.argv 參數來初始化它。
w = QtGui.QWidget() w.resize(250, 150) w.move(300, 300) w.setWindowTitle('Simple') w.show()
创建一个QWidget()控件,赋值给了w变量
设置大小为宽250 高150
移动到屏幕上x:300 y:300坐标
并设置窗口标题为Simple
最后一行的show()方法是显示这个控件,如果不show(),它就不会显示在屏幕上。
tuopan = QtGui.QSystemTrayIcon(w)
这一行新建了一个QSystemTrayIcon对象,我们想在系统托盘显示图标就必须创建它,因为它提供了方法让我们选择图片在系统托盘里显示。
参数w是他的父控件。 (记不记得前面我们创建了一个QWidget对象赋值给了w变量?)
然后赋值给了tuopan变量。
icon1 = QtGui.QIcon('tuopan.jpg')
第二行创建了一个QIcon对象,然后把他赋值给icon1,这个对象载入了名为tuopan.jpg的图片,图片是和代码文件同目录的,所以不用带路径。
tuopan.setIcon(icon1)
我们用tuopan的setIcon方法来设置系统托盘图标。 上一行代码我们只是创建了一个QIcon对象而已,什么都没做。
tuopan.show()
调用对象的show()方法,调用后便会显示系统托盘。
如果不show(), 便不会显示, 后面的showMessage也会失效.
tuopan.showMessage("haha","content",icon=0)
showMessage()方法是用来显示托盘弹出来的信息的。 这个方法还有1个参数叫做msecs
第一个参数是标题
第二个参数是内容
第三个参数是显示的图标,如果为0,则是不显示任何图标。如下图:
还有3个可选值。分别是1,2,3. (官方文档的截图):
选择1,则代表是信息图标,如下图:
2:
3:
只有这3个,不能自定义。 T_T
文档网址:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qsystemtrayicon.html#MessageIcon-enum
对象的事件
这个对象 (QSystemTrayIcon)。 只有2个事件。 ( 不信?看文档:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qsystemtrayicon.html#showMessage )
分别是 messageClicked() 和 activated()
messageClicked() 如果有绑定处理函数,那么当弹出的信息(之前我们那个showMessage()) 被点击后会触发该函数
activated() 是当托盘图标被点击的时候触发所绑定的处理函数
def message(): print ("弹出的信息被点击了") tuopan.messageClicked.connect(message)
上面代码中,messageClicked事件绑定 (或者说连接,很多书中喜欢说连接)了message函数。
如前面所说,当弹出的信息框被点击的时候就会触发messageClicked事件。
那个信息框被点击后就会消失。 如图:
【点击弹出的信息框前】 (这里我的showMessage函数的icon参数是1,所以会有那个三角感叹号图标。)
【点击后】:
( = = 图片中的其他东西请忽略掉就好。。)
def a(): print ("系统托盘图标被点击了") tuopan.activated.connect(a)
同样, 这里也是一样。
看图(我先点了弹出来的信息框,然后点了好多次那个系统图标,所以会输出这么多行。):
如果还有哪里看不懂的欢迎留言 (我知道我写文章的功力很差,啊哈哈哈……)
本篇文章完。