Найти - Пользователи
Полная версия: PyQt4: закрыть оба окна одновременно
Начало » GUI » PyQt4: закрыть оба окна одновременно
1
leonid_10
Натолкнулся на отличный пример на сайте PySide, но абсолютно не соображаю, как сделать и где запись, чтобы, когда я закрываю primary window, другое окно автоматически закрывалось
reclosedev
Можно переопределить 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()        
Можно ссылку на этот пример?
leonid_10

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

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

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

Вот еще частично переписанные на PySide примеры: https://github.com/PySide/Examples/tree/master/examples
leonid_10
reclosedev
Это понятно, я говорил не про то. Функция _hide_another_win_btn_cb вызывается когда нажимают кнопку Hide. Если второго окна еще не существует, а кнопку нажали, то зачем его создавать только для того чтобы скрыть? Логичнее игнорировать нажатие при отсутствии окна.

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