Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание трея 
:(
    Опции темы
michael1988
Дата 12.7.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



помогите разобраться как в pyqt4 сделать трей, в windows. нашел как сделать отображение трея, но при нажатии на кнопку свернуть, программа сворачивается на панель, а не в трей
PM MAIL   Вверх
av0000
Дата 13.7.2009, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.2.2009

Репутация: 1
Всего: 2



Если я правильно телепнул, то нужно _свернуть_окно_ в трей. smile

1. сделать иконку QSystemTrayIcon
2. переопределить обработчик closeEvent/hideEvent и вместо закрытия/минимизации делать self.hide()
3. по команде из меню иконки или обработчику нажатия на неё делать self.show()
PM MAIL Jabber   Вверх
michael1988
Дата 13.7.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



спасибо, с этим вроде разобрался, только не получилось проставить картинку на трей и на само окно(сверху слева). если можно приведите пример
PM MAIL   Вверх
av0000
Дата 14.7.2009, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.2.2009

Репутация: 1
Всего: 2



Выложил здесь.
Если иконка не в скомпилированном ресурсе - указывать полный или относительный путь без двоеточия в начале, иначе - это "путь" внутри файла ресурсов.

ЗЫ: И вообще - RTFM рулит smile Здесь всё есть в описаниях классов.
ЗЫЫ: да, и не забудь сделать self.tray.show() чтобы иконку-то показать smile

Это сообщение отредактировал(а) av0000 - 14.7.2009, 08:24
PM MAIL Jabber   Вверх
michael1988
Дата 14.7.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



если можно еще пару вопросов, не совсем понятных.. 
1. как сделать чтобы по нажатию на трей окно разворачивалось, а еще при одном нажатии сворачивалось
2. как сделать чтобы окно при запуске не было видно, программа должна висеть в трее, но выполнять свою задачу, а при необходимости,  (например, если программа закончила свое выполнение и выдала результат на экран) сама развернется..
если можно с примерами, как новичку, тяжело разобраться с этими вопросами.. спасибо)
PM MAIL   Вверх
av0000
Дата 15.7.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.2.2009

Репутация: 1
Всего: 2



Цитата(michael1988 @ 14.7.2009,  23:19)
если можно еще пару вопросов, не совсем понятных.. 
1. как сделать чтобы по нажатию на трей окно разворачивалось, а еще при одном нажатии сворачивалось
2. как сделать чтобы окно при запуске не было видно, программа должна висеть в трее, но выполнять свою задачу, а при необходимости,  (например, если программа закончила свое выполнение и выдала результат на экран) сама развернется..
если можно с примерами, как новичку, тяжело разобраться с этими вопросами.. спасибо)

1. Строку
Код

QObject.connect(self.tray, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.onTray)

не забыл? Тогда:
Код

  def onTray(self, reason):
    if reason == self.tray.Trigger:
      if self.isVisible():
        self.hide()
      else:
        self.show()


2. следует из 1. - при запуске _не_делать_ self.show() - только "внутри" self - self.tray.show(). У меня примерно так:
Код

def main():
  app = QtGui.QApplication(sys.argv)
  app.setQuitOnLastWindowClosed(False) # Запрещаем автоматический выход при закрытии последнего окна
  w = SIApp()

  if not w.settings.value("settings/StartMin",QVariant(False)).toBool(): # где-то в настройка хранится режим запуска "без окна"
    w.show()

PM MAIL Jabber   Вверх
michael1988
Дата 20.7.2009, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 12.7.2009

Репутация: нет
Всего: нет



1.  def onTray(self, reason):
       if reason == self.tray.Trigger:
         if self.isVisible():
           self.hide()
         else:
           self.show()

не получается с этим...

QObject.connect(self.tray, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.onTray) - здесь выдается ошибку на self.onTray

2. подскажите еще как можно сделать лейбл с прокруткой... в QGridLayout вставил QLabel и QScrollBar, а как закодить чтоб прокручивался текст не знаю...

Это сообщение отредактировал(а) michael1988 - 20.7.2009, 21:24
PM MAIL   Вверх
av0000
Дата 20.7.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 11.2.2009

Репутация: 1
Всего: 2



Цитата(michael1988 @  20.7.2009,  20:54 Найти цитируемый пост)
не получается с этим...

QObject.connect(self.tray, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.onTray) - здесь выдается ошибку на self.onTray 


onTray должен быть методом того же класса-наследника окна (не функцией, висящей в воздухе)

И вообще - с треем есть пример в поставке pyQt - RTFM :-/

Это сообщение отредактировал(а) av0000 - 20.7.2009, 22:03
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.