Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQt4: закрыть оба окна одновременно [RSS Feed]

#1 Май 8, 2012 22:33:42

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4: закрыть оба окна одновременно

Натолкнулся на отличный пример на сайте PySide, но абсолютно не соображаю, как сделать и где запись, чтобы, когда я закрываю primary window, другое окно автоматически закрывалось



Прикреплённый файлы:
attachment secondary_window.py (2,6 KБ)

Офлайн

#2 Май 9, 2012 09:07:13

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4: закрыть оба окна одновременно

Можно переопределить closeEvent и в нем закрывать второе окно.

def closeEvent(self, event):
    if self.another_win:
        self.another_win.hide()        
leonid_10
Натолкнулся на отличный пример на сайте PySide
Хм, там есть несколько странностей:
primary_win_pos = 'right'
...
if primary_win_pos == 'left':
Можно обойтись без этого немножко переписав ветвление.
Реакция на кнопку скрытия окна:
def _hide_another_win_btn_cb(self):
    if not self.another_win:
        self.another_win = AnotherWindow(primary_win = self)
    self.another_win.hide()  
Зачем создавать окно если мы только хотим его закрыть? Правильнее бы было:
def _hide_another_win_btn_cb(self):
    if self.another_win:
        self.another_win.hide()        
Можно ссылку на этот пример?

Офлайн

#3 Май 9, 2012 13:38:37

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4: закрыть оба окна одновременно


reclosedev
Можно ссылку на этот пример?

Конечно, можно
Это общая:
http://qt-project.org/wiki/PySideDocumentation
А отсюда пример, только я его переименовал был, и какой точно не помню.
https://github.com/shuge/Enjoy-Qt-Python-Binding/tree/5ecbb1543d3d53f4a2217ae63a0793f2cf78c4d5/windows



Офлайн

#4 Май 9, 2012 13:45:48

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4: закрыть оба окна одновременно

reclosedev
Зачем создавать окно если мы только хотим его закрыть?
Приложение двухоконное, просто по завершении работы не клацать же по обоим. Одно щёлк, второе автоматом закрылось.
Первый пример мне как раз походит, спасибо, огромное!



Отредактировано leonid_10 (Май 9, 2012 14:04:47)

Офлайн

#5 Май 9, 2012 16:46:47

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4: закрыть оба окна одновременно

leonid_10
Приложение двухоконное, просто по завершении работы не клацать же по обоим. Одно щёлк, второе автоматом закрылось.
Это понятно, я говорил не про то. Функция _hide_another_win_btn_cb вызывается когда нажимают кнопку Hide. Если второго окна еще не существует, а кнопку нажали, то зачем его создавать только для того чтобы скрыть? Логичнее игнорировать нажатие при отсутствии окна.

Вот еще частично переписанные на PySide примеры: https://github.com/PySide/Examples/tree/master/examples

Офлайн

#6 Май 9, 2012 19:26:49

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQt4: закрыть оба окна одновременно

reclosedev
Это понятно, я говорил не про то. Функция _hide_another_win_btn_cb вызывается когда нажимают кнопку Hide. Если второго окна еще не существует, а кнопку нажали, то зачем его создавать только для того чтобы скрыть? Логичнее игнорировать нажатие при отсутствии окна.

А, вот что. Да, hide кнопку я сам прикрутил, просто скопировав и отредактировав show. Я не думал о последствиях, я просто пытался понять, как оно работает. Я ж так, недоучка-самоучка.
Спасибо ещё за ссылку, но я уже, вроде как разобрался с тем, что опубликовано и как менять PyQt4 на PySide. :)
Будет ещё несколько вопросов, но это отдельные темы попозже.



Офлайн

  • Начало
  • » GUI
  • » PyQt4: закрыть оба окна одновременно[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version