Форум сайта python.su
Всем доброго времени суток, друзья) Я пишу дипломную работу на Py3 Всё начинаю с азов и помочь мне некому, только ВЫ) Так вот я смог сделать трей на PyQt4 и всё работает замечательно, но естественно имеется “минус”, с ПЗ GUI не уходит в трей) Помогите решить проблему) и вот ещё такая вещь) Как сделать на диалоговом окне, которое спрашивает выйти или нет, русские кнопки?!) Правда создание самих диалоговых окон я ещё не читал, но это так вопрос не к делу)
from PyQt4 import QtGui, QtCore import ui_MyForm, os, ui_MF2 PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) class Form(QtGui.QWidget): # Прикрепление формы из Дизайнера, создание сигнала для кнопок def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = ui_MyForm.Ui_Form() self.ui.setupUi(self) self.connect(self.ui.bt1, QtCore.SIGNAL("clicked()"), self.on_change) self.connect(self.ui.bt2, QtCore.SIGNAL("clicked()"), self.quit) # self.connect(self.ui.bt3, QtCore.SIGNAL("clicked()"), # self.info) # Создание трея plik = PROJECT_ROOT + "/tray.png" menu = QtGui.QMenu() quitAction = menu.addAction("Закрыть") sicon = QtGui.QIcon(plik) self.tray = QtGui.QSystemTrayIcon(sicon) self.tray.setContextMenu(menu) self.tray.setToolTip(u'Чат') self.connect(quitAction, QtCore.SIGNAL("triggered()"), app, QtCore.SLOT("closeAllWindows()")) self.connect(self.tray, QtCore.SIGNAL("triggered()"), app, QtCore.SLOT("closeAllWindows()")) self.tray.activated.connect(self.iconActivated) def quit(self): # Обработка кнопки "Выход" result = QtGui.QMessageBox.question(self, "Закрытие окна", "Вы точно хотите закрыть?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if result == QtGui.QMessageBox.Yes: self.close() else: self.ignore() def iconActivated(self, reason): # Обработчик создания иконки трея if reason == QtGui.QSystemTrayIcon.DoubleClick: if self.isMinimized(): self.showNormal() self.activateWindow() else: self.showMinimized() def on_change(self): # Обработчик кнопки bt1 a = (desk.width(), desk.height()) self.ui.lab2.setText(str(a)) def changeEvent(self, e): # Обработчик при изменении формы if e.type() == QtCore.QEvent.WindowStateChange: if self.isMinimized(): self.tray.showMessage(u'Чат', "Если я нужен, я здесь") self.hide()# Вот это должно вроде скрывать форму с ПЗ e.accept() QtGui.QWidget.changeEvent(self, e) def closeEvent(self, e): # Обработчик события закрытия формы result = QtGui.QMessageBox.question(self, "Закрытие окна", "Вы точно хотите закрыть?", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if result == QtGui.QMessageBox.Yes: e.accept() QtGui.QWidget.closeEvent(self, e) else: e.ignore() def keyReleaseEvent(self, k): # Обработчик нажания "горячих клавиш" if k.key() == QtCore.Qt.Key_Escape: self.close() if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) window = Form() desk = QtGui.QApplication.desktop() window.setWindowOpacity(1) window.move(450, 350) window.show() window.tray.show() sys.exit(app.exec_())
Отредактировано Oris_37 (Апрель 22, 2015 09:48:06)
Прикреплённый файлы: Program.rar (22,1 KБ)
Офлайн
В Архиве не достаёт файла) Забыл совсем)
Прикреплённый файлы: Program.rar (23,4 KБ)
Офлайн