Найти - Пользователи
Полная версия: QtGui.QSystemTrayIcon
Начало » GUI » QtGui.QSystemTrayIcon
1
hellslade
Всем привет. Вот код:
from PyQt4 import QtCore, QtGui, uic

class MainWidget(QtGui.QMainWindow):
def __init__(self, parent):
QtGui.QMainWindow.__init__(self, parent)
uiClass, baseClass = uic.loadUiType('main.ui')
icon = QtGui.QIcon('icon.png')
self.setWindowIcon(icon)
self.ui = uiClass()
self.ui.setupUi(self)
self.tbicon = QtGui.QSystemTrayIcon(icon)
self.tbicon.show()
self.tbicon.showMessage(u'title',u'text',self.tbicon.MessageIcon(2), 3000)
trayMenu = QtGui.QMenu(self)
quitAction = QtGui.QAction(u'Выход', self)
QtCore.QObject.connect(quitAction, QtCore.SIGNAL("triggered()"), QtGui.qApp, QtCore.SLOT("quit()"))
trayMenu.addAction(quitAction)
self.tbicon.setContextMenu(trayMenu)

class App(QtGui.QApplication):
def __init__(self, argv):
QtGui.QApplication.__init__(self, argv)
self.ui = MainWidget(None)
self.ui.show()
self.setQuitOnLastWindowClosed(True)

if __name__ == '__main__':
import sys
app = App(sys.argv)
sys.exit(app.exec_())
Почему при выходе из приложения в трее остается иконка? и на консоль идет сообщение
QApplication::qAppName: Please instantiate the QApplication object first
Что я сделал неправильно?
poltergeist
1) иконку в трее надо самому прятать перед выходом
2) делать сабкласс из QtGui.QApplication совершенно не нужно, создайте сначала инстанс этого класса, а потом уже создавайте окно и прочее.
3) self.setQuitOnLastWindowClosed(True) - это и так происходит по дефолту
hellslade
Спасибо! Более или менее понятно :)
apt-get_me_a_beer
hellslade
Спасибо! Более или менее понятно :)
А вы не подскажете как сделать так что бы при нажатии на окно закрывалась но приложение все еще оставалось висеть. И затем нажимая на иконку в трее оно снова открывалась?
В первом случае setQuitOnLastWindowClosed(False) поможет?
hellslade
apt-get_me_a_beer
В первом случае setQuitOnLastWindowClosed(False) поможет?
А почему бы просто не попробовать?

При нажатии на срабатывает Close event, переопределяйте обработчик closeEvent
apt-get_me_a_beer
hellslade
apt-get_me_a_beer
В первом случае setQuitOnLastWindowClosed(False) поможет?
А почему бы просто не попробовать?

При нажатии на срабатывает Close event, переопределяйте обработчик closeEvent
Да спасибо. Уже решил вопрос так:
    
traySignal = "activated(QSystemTrayIcon::ActivationReason)"

def __icon_activated(self, reason):
if reason == QSystemTrayIcon.DoubleClick and self.isVisible() == False:
self.show()
elif reason == QSystemTrayIcon.DoubleClick and self.isVisible() == True:
self.hide()
Теперь не могу определить начальный размер. QMainWindow
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB