Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 42
PyQt5

Событие дочернего окна

30.04.2021, 12:30. Показов 1816. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
У меня есть родительское и дочернее окно. Я могу отследить событие закрытия родительского окна. Но я не могу понять, как мне отследить, скажем, такое же событие, но дочернего окна. Прошу Вашей помощи. Заранее спасибо! Пример кода прилагаю:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QMdiArea
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
 
        self.mdiArea = QtWidgets.QMdiArea(self.centralwidget)
        self.mdiArea.setFrameShape(QtWidgets.QFrame.Box)
        self.mdiArea.setObjectName("mdiArea")
        
        MainWindow.setCentralWidget(self.mdiArea)
        
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
 
        self.menu_1 = QtWidgets.QMenu(self.menubar)
        self.menu_1.setObjectName("menu_1")
                
        MainWindow.setMenuBar(self.menubar)
    
        self.pop_menu = QtWidgets.QAction(MainWindow)
        self.pop_menu.setObjectName("pop_menu")
        
        self.menu_1.addAction(self.pop_menu)
        self.menubar.addAction(self.menu_1.menuAction())
                    
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
        self.pop_menu.triggered.connect(self.wnd_1)
         
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "FFF"))
        self.menu_1.setTitle(_translate("MainWindow", "menu_1"))
        self.pop_menu.setText(_translate("MainWindow", "pop_menu"))
 
class MyWin(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
               
    def wnd_1(self):
        
        sub = QtWidgets.QMdiSubWindow()
        sub.setWindowTitle("wnd_1")
        
        self.mdiArea.addSubWindow(sub)
        sub.setGeometry(QtCore.QRect(0,0,200,100))
        sub.show()
 
    def closeEvent(self, event):
        
        reply = QMessageBox.question(self, 'Выход',
            "Вы уверены, что хотите завершить работу ?", QMessageBox.Yes |
            QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes: sys.exit()
        else: event.ignore() 
 
     
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MyWin()
    w.show()
    sys.exit(app.exec_())
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2021, 12:30
Ответы с готовыми решениями:

Не получается скопировать строку в QTableWidget дочернего окна из QTableWidget основного окна
Здравствуйте, я не могу разобраться, как при нажатии на кнопку "Добавить", скопировать строку с характеристиками итема в таблицу дочернего...

Не получается добавить итем из tablewidget основного окна в tablewidget дочернего окна
Здравствуйте, я не могу разобраться, как при помощи функции add_cpu добавить в таблицу дочернего окна из таблицы основного окна ячейку,...

Вызов дочернего окна по кнопке
Здравствуйте! Столкнулся с проблемой, name 'settings_window' is not defined из-за того что вызываю это дочернее окно функцией def...

2
 Аватар для kapbepucm
1568 / 741 / 321
Регистрация: 02.05.2020
Сообщений: 1,660
30.04.2021, 13:32
Лучший ответ Сообщение было отмечено katyuhma как решение

Решение

также как и в родительском- переопределив closeEvent:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox, QMdiArea
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
 
        self.mdiArea = QtWidgets.QMdiArea(self.centralwidget)
        self.mdiArea.setFrameShape(QtWidgets.QFrame.Box)
        self.mdiArea.setObjectName("mdiArea")
        
        MainWindow.setCentralWidget(self.mdiArea)
        
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
 
        self.menu_1 = QtWidgets.QMenu(self.menubar)
        self.menu_1.setObjectName("menu_1")
                
        MainWindow.setMenuBar(self.menubar)
    
        self.pop_menu = QtWidgets.QAction(MainWindow)
        self.pop_menu.setObjectName("pop_menu")
        
        self.menu_1.addAction(self.pop_menu)
        self.menubar.addAction(self.menu_1.menuAction())
                    
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
        self.pop_menu.triggered.connect(self.wnd_1)
         
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "FFF"))
        self.menu_1.setTitle(_translate("MainWindow", "menu_1"))
        self.pop_menu.setText(_translate("MainWindow", "pop_menu"))
 
class MyWin(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
         
    def wnd_1(self):    
        sub = QtWidgets.QMdiSubWindow()
        sub.setWindowTitle("wnd_1")
        
        self.mdiArea.addSubWindow(sub)
        sub.setGeometry(QtCore.QRect(0,0,200,100))
        sub.closeEvent = self.wnd_1_close
        sub.show()
 
    def wnd_1_close(self, event):
        QMessageBox.warning(self, "", "wnd_1 close event")
        event.accept()
 
    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Выход',
            "Вы уверены, что хотите завершить работу ?", QMessageBox.Yes |
            QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes: sys.exit()
        else: event.ignore() 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MyWin()
    w.show()
    sys.exit(app.exec_())
1
0 / 0 / 0
Регистрация: 03.04.2021
Сообщений: 42
30.04.2021, 13:48  [ТС]
Спасибо большое! Вы мне помогли)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.04.2021, 13:48
Помогаю со студенческими работами здесь

Изменение событий дочернего окна
Доброго времени суток! Прошу помощи в следующем вопросе. У меня есть родительское и дочернее окна. Я могу отследить события закрытия...

Обработчик сигнала из дочернего окна
Добрый день. только начинаю осваивать PyQt5. проблема в следующем. Есть два окна -form1 и form2. Из form1 вызывается form2. При попытке...

Сигнал из дочернего окна MDI
Добрый день! Не могу поймать сигнал в родителе от дочернего окна. Имею два файла. import testfile02 from testfile02 import win02...

Как отследить закрытие дочернего окна?
Есть 2 окна: родительское - MainWindow, дочернее - Dialog. По нажатию кнопки в окне "MainWindow" открывается окно "Dialog"....

Закрыть дочернее окно из функции другого дочернего окна
Всем привет, я ещё не совсем хорошо ориентируюсь в ооп, и поэтому у меня достаточно банальный вопрос: Как закрыть дочернее окно из функции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru