Найти - Пользователи
Полная версия: Убираем GUI в трей из панели задач!!!
Начало » GUI » Убираем GUI в трей из панели задач!!!
1
Oris_37
Всем доброго времени суток, друзья) Я пишу дипломную работу на 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
В Архиве не достаёт файла) Забыл совсем)
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