Using QSystemTrayIcon with PyQt
Alex Teiche
xelapond at gmail.com
Mon Mar 31 21:40:14 EDT 2008
On Mar 31, 11:49 am, Alex Teiche <xelap... at gmail.com> wrote:
> On Mar 30, 3:50 pm, Benjamin <musiccomposit... at gmail.com> wrote:
>
>
>
> > On Mar 29, 11:02 pm, Alex Teiche <xelap... at gmail.com> wrote:> Hello,
>
> > > I am pretty new to Python, and have never learned C++. I am trying to
> > > implement the following thing into my python application:
>
> > >http://doc.trolltech.com/4.3/qsystemtrayicon.html
>
> > > Through PyQt. I have been using PyQt for awhile and I know how do use
> > > it, but I could not get this specific thing to work. Can someone give
> > > me some hints as to get it working in Python?
>
> > What problems are you having?
>
> > > Thanks a ton,
>
> > > Alex
>
> Thanks everyone for your help. I found the example to be particularly
> helpful, and I have made a simplified version just to display an icon
> with a quit button in its menu. Once I know how to do that I will
> incorporate it into my larger program, with more options and the
> ability show messages. The problem is, it doesn't work, and I can't
> find out what's wrong. Can you give me some hints?
>
> Here is the code:
> import sys
> from PyQt4 import QtGui, QtCore
>
> class trayIcon(QtGui.QWidget):
> def __init__(self, parent=None):
> QtGui.QWidget.__init__(self, parent)
>
> #********Create Actions for the Tray Menu********#
> self.quitAction = QtGui.QAction(self.tr("&Quit"), self)
> QtCore.QObject.connect(self.quitAction,
> QtCore.SIGNAL("triggered()"), QtGui.qApp, QtCore.SLOT("quit()"))
>
> create_tray_icon()
>
> self.composeAction.setEnabled(visible)
> QtGui.QWidget.setVisible(self, visible)
>
> self.trayIcon.show()
>
> def create_tray_icon(self):
> self.trayIconMenu = QtGui.QMenu(self)
> self.trayIconMenu.addAction(self.composeAction)
> self.trayIcon = QtGui.QSystemTrayIcon(self)
> self.trayIcon.setContextMenu(self.trayIconMenu)
> self.trayIcon.setIcon(bad.svg)
>
> app = QtGui.QApplication(sys.argv)
> sys.exit(app.exec_())
OK, I messed around with it some more, and it works. I just don't
know how to set an icon, and the example doesn't help at all.
Here is the code:
import sys
from PyQt4 import QtCore, QtGui
class Systray(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.createActions()
self.createTrayIcon()
#QtCore.QObject.connect(self.trayIcon,
QtCore.SIGNAL("messageClicked()"), self.messageClicked)
#QtCore.QObject.connect(self.trayIcon,
QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"),
self.iconActivated)
self.trayIcon.show()
def createActions(self):
#self.minimizeAction = QtGui.QAction(self.tr("Mi&nimize"), self)
#QtCore.QObject.connect(self.minimizeAction,
# QtCore.SIGNAL("triggered()"), self, QtCore.SLOT("hide()"))
#self.maximizeAction = QtGui.QAction(self.tr("Ma&ximize"), self)
#QtCore.QObject.connect(self.maximizeAction,
# QtCore.SIGNAL("triggered()"), self,
# QtCore.SLOT("showMaximized()"))
#self.restoreAction = QtGui.QAction(self.tr("&Restore"), self)
#QtCore.QObject.connect(self.restoreAction,
# QtCore.SIGNAL("triggered()"), self,
# QtCore.SLOT("showNormal()"))
self.quitAction = QtGui.QAction(self.tr("&Quit"), self)
QtCore.QObject.connect(self.quitAction, QtCore.SIGNAL("triggered()"),
QtGui.qApp, QtCore.SLOT("quit()"))
def createTrayIcon(self):
self.trayIconMenu = QtGui.QMenu(self)
#self.trayIconMenu.addAction(self.minimizeAction)
#self.trayIconMenu.addAction(self.maximizeAction)
#self.trayIconMenu.addAction(self.restoreAction)
#self.trayIconMenu.addSeparator()
self.trayIconMenu.addAction(self.quitAction)
self.trayIcon = QtGui.QSystemTrayIcon(self)
self.trayIcon.setContextMenu(self.trayIconMenu)
app = QtGui.QApplication(sys.argv)
x = Systray()
sys.exit(app.exec_())
How would I go about setting the icon?
More information about the Python-list
mailing list