Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 24, 2015 09:14:25

Oris_37
Зарегистрирован: 2015-04-22
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Убираем GUI в трей из панели задач

Всем доброго времени суток, друзья) Я пишу дипломную работу на 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_())
[code python]

Офлайн

#2 Апрель 26, 2015 16:11:38

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Убираем GUI в трей из панели задач

Извините за offtop. У меня дипломники к проектам делают приложения с консольным интерфейсом и отлично их сдают. Что у вас за тема диплома такая что существенно уходит окно в трей или нет, И тем более какая разница будет на кнопке Ok или Да?
Скорее всего текущие имена в стандартных диалогах определяются настройками локали.



Офлайн

#3 Июнь 4, 2015 18:36:53

Oris_37
Зарегистрирован: 2015-04-22
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Убираем GUI в трей из панели задач

doza_and
Извините за offtop. У меня дипломники к проектам делают приложения с консольным интерфейсом и отлично их сдают. Что у вас за тема диплома такая что существенно уходит окно в трей или нет, И тем более какая разница будет на кнопке Ok или Да? Скорее всего текущие имена в стандартных диалогах определяются настройками локали.


У НАС такие требования мол всё должно быть локализовано… и я до сих пор не решил проблему(Пытаюсь реализовать Клиент-серверное приложение) Ну хотелось бы чтобы раз “сворачивание” происходит, уходило в трей) И я поняв как это сделать реализую в настройках выбор этой функции)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version