PyQt4 -- 设置系统托盘显示

来源:互联网 发布:范尼凯克400 知乎 编辑:程序博客网 时间:2024/05/19 13:26

文章转载请著名出处。







这篇文章教大家写PyQt4程序的时候         如何设置程序在系统托盘区域显示图标



系统托盘指的是这块区域:



(笔者用的是window7)




直接上源码:

from PyQt4 import QtGuiimport sysapp = 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 QtGuiimport 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 QtGuiimport sysapp = 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 QtGuiimport 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.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)

同样, 这里也是一样。

看图(我先点了弹出来的信息框,然后点了好多次那个系统图标,所以会输出这么多行。):




如果还有哪里看不懂的欢迎留言    (我知道我写文章的功力很差,啊哈哈哈……)



本篇文章完。





原创粉丝点击