On Apr 1, 7:56 am, BlueBird <[EMAIL PROTECTED]> wrote: > On Apr 1, 6:00 am, Alex Teiche <[EMAIL PROTECTED]> wrote: > > > > > On Mar 31, 7:53 pm, Benjamin <[EMAIL PROTECTED]> wrote: > > > > On Mar 31, 8:41 pm, Alex Teiche <[EMAIL PROTECTED]> wrote: > > > > > On Mar 31, 6:40 pm, Alex Teiche <[EMAIL PROTECTED]> wrote: > > > > > > On Mar 31, 11:49 am, Alex Teiche <[EMAIL PROTECTED]> wrote: > > > > > > > On Mar 30, 3:50 pm, Benjamin <[EMAIL PROTECTED]> wrote: > > > > > > > > On Mar 29, 11:02 pm, Alex Teiche <[EMAIL PROTECTED]> 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? > > > > > Sorry, here is the code with commented out lines removed: > > > > > import sys > > > > from PyQt4 import QtCore, QtGui > > > > > class Systray(QtGui.QWidget): > > > > def __init__(self): > > > > QtGui.QWidget.__init__(self) > > > > > self.createActions() > > > > self.createTrayIcon() > > > > > self.trayIcon.show() > > > > > def createActions(self): > > > > > 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.quitAction) > > > > > self.trayIcon = QtGui.QSystemTrayIcon(self) > > > > self.trayIcon.setContextMenu(self.trayIconMenu) > > > > > app = QtGui.QApplication(sys.argv) > > > > x = Systray() > > > > sys.exit(app.exec_()) > > > > I believe the method you want is QSystemTrayIcon.setIcon. > > > I found that, but what do I pass into it? Passing a string to a .svg > > file doesn't work. > > http://www.riverbankcomputing.com/Docs/PyQt4/html/qsystemtrayicon.htm... > > So, you must pass a QIcon. > > Now, the doc of > QIcon:http://www.riverbankcomputing.com/Docs/PyQt4/html/qicon.html > > Oh, the list of supported file format is described separately > in:http://www.riverbankcomputing.com/Docs/PyQt4/html/qimagereader.html#s... > > I see that svg is not part of that list. So, it is not surprising that > it does not work but there are plenty of other formats that will work. Well, you can use the QtSvg module to add support for them. > > It took me about 20 seconds to solve your problem by reading the > appropriate documentation. I suggest you do that too in the future... > > regards, > > Philippe
-- http://mail.python.org/mailman/listinfo/python-list