Thanks a ton pete. Worked perfectly. Sorry for not making myself clear from the first time itself..
On Wed, Nov 10, 2010 at 10:06 PM, <[email protected]>wrote: > Date: Wed, 10 Nov 2010 17:36:32 +0100 > From: "Hans-Peter Jansen" <[email protected]> > To: [email protected] > Subject: Re: [PyQt] How can i capture activated signal of Tray Icon?? > Message-ID: <[email protected]> > Content-Type: text/plain; charset="utf-8" > > On Wednesday 10 November 2010, 16:30:03 Jebagnana Das wrote: > > Thanks pete for your reply. > > > > I think you've misunderstood the core of the problem. The problem > > here is not the elif construct(Even changed the code, had no effect). > > Well, it might be a poor answer to a poorly formulated question then? > Anyway.. > > > If we double click on the tray icon, on completion of the first click > > this function gets called, and once again it's called when you finish > > your second click.. Any solutions... > > Ah, now I understand your problem. The Trigger event is always thrown, > even in the DoubleClick case. Hmm, now you found out, why the Trolls > didn't call the former event just LeftClick ;-), and fixing this would > shift the issue into DoubleClick handling. > > Here's, how I would solve such an issue: > > import sys > from PyQt4.QtCore import * > from PyQt4.QtGui import * > > class MainWindow(QMainWindow): > > def __init__(self, parent=None): > super(MainWindow, self).__init__(parent) > self.trayIcon = QSystemTrayIcon(QIcon("some.png"), self) > self.trayIcon.activated.connect(self.onTrayIconActivated) > self.trayIcon.show() > self.disambiguateTimer = QTimer(self) > self.disambiguateTimer.setSingleShot(True) > self.disambiguateTimer.timeout.connect( > self.disambiguateTimerTimeout) > > def onTrayIconActivated(self, reason): > print "onTrayIconActivated:", reason > if reason == QSystemTrayIcon.Trigger: > self.disambiguateTimer.start(qApp.doubleClickInterval()) > elif reason == QSystemTrayIcon.DoubleClick: > self.disambiguateTimer.stop() > print "Tray icon double clicked" > > def disambiguateTimerTimeout(self): > print "Tray icon single clicked" > > > if __name__ == "__main__": > app = QApplication(sys.argv) > w = MainWindow() > w.show() > sys.exit(app.exec_()) > > > Pete > > > Am Tuesday 09 November 2010 15:08:29 schrieb Jebagnana Das: > > > > Thanks Zoltan.. It did help a lot.. But if i want to capture > > > > single click and double click events of the mouse separately i'm > > > > afraid this can't be used.. > > > > > > > > def onTrayIconActivated(self, reason): > > > > if reason == QSystemTrayIcon.DoubleClick: > > > > print('tray icon double clicked') > > > > > > > > if reason == QSystemTrayIcon.Trigger: > > > > print("Tray icon single clicked") > > > > > > > > If i double click the tray icon it executes both if conditions. > > > > Any way > > > > > > of > > > > > > > resolving this?. Thanks again.. > > > > > > elif instead of second if perhaps? > > > > > > Pete > > > > >
_______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
