On Jun 17, 2010 (Thursday), at 1:56 PM, vepro wrote:

Pratele,
Zkousim udelat cast kodu, ktera ma mit za cil vytvorit v system tray ikonu + menu. V tomto menu budou ruzne polozky (ktere budou dale otevirat ruzna okna) a take polozka Exit. Polozka Exit ukonci celou aplikaci. Zatim se mi podaril nasledujici kod (viz nize), ktery aplikaci ukonci, avsak v konzoli se objevi: Segmentation fault. Je to nekorektni postup, ci co to presne znamena?? Nejake navrhy jak to udelat pr ipadne lepe? Dekuji

já vždycky systrayicon používal s QWidget parent.

class Widget(QtGui.QWidget):
    ...
    self.systray = QSystemTrayIcon(sef)
    ...

pak to většinou šlo bez pádů. Jo, a místo app.exit() jsem dával widget.close(), ale v tom by problém být neměl.


#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class SystemTrayIcon(QtGui.QSystemTrayIcon):
       def __init__(self, icon, parent=None):
               QtGui.QSystemTrayIcon.__init__(self,parent)
               self.setIcon(QtGui.QIcon("./pig_icon.gif"))
               self.trayMenu = QtGui.QMenu()
               self.exitAction = self.trayMenu.addAction("Exit")
               self.loadAction = self.trayMenu.addAction("Load")
               self.setContextMenu(self.trayMenu)
self.connect(self.exitAction, QtCore.SIGNAL('triggered()'), self.closeApp) self.connect(self.loadAction, QtCore.SIGNAL('triggered()'), self.load)
       def closeApp(self):
               app.exit()
       def load(self):
               print "load"

if __name__ == '__main__':
       app = QtGui.QApplication(sys.argv)
       trayIcon = SystemTrayIcon(QtGui.QIcon())
       trayIcon.show()
       sys.exit(app.exec_())


Vepro
_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

_______________________________________________
Python mailing list
[email protected]
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem