Форум сайта python.su
Всем привет. Вот код:
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
Офлайн
1) иконку в трее надо самому прятать перед выходом
2) делать сабкласс из QtGui.QApplication совершенно не нужно, создайте сначала инстанс этого класса, а потом уже создавайте окно и прочее.
3) self.setQuitOnLastWindowClosed(True) - это и так происходит по дефолту
Отредактировано (Дек. 4, 2008 18:30:35)
Офлайн
Спасибо! Более или менее понятно :)
Офлайн
hellsladeА вы не подскажете как сделать так что бы при нажатии на окно закрывалась но приложение все еще оставалось висеть. И затем нажимая на иконку в трее оно снова открывалась?
Спасибо! Более или менее понятно :)
Офлайн
apt-get_me_a_beerА почему бы просто не попробовать?
В первом случае setQuitOnLastWindowClosed(False) поможет?
Офлайн
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()
Отредактировано (Сен. 16, 2010 07:13:11)
Офлайн