@vitosua
Учу C# and WPF

Как так получилось что ето работает:)?

Есть такой код:
class BugWindow (QtGui.QWidget, Create_bug_report.Ui_Bug):
    def __init__(self, parent=None, flags=None):
        QtGui.QWidget.__init__(self, parent) 
        self.setWindowFlags(flags)      
        self.setupUi(self)
    def __call__(self):
        #print(self.parentWidget())
        self.show() 
....
try:
...
raise FileNotFoundError

except FileNotFoundError as e:
        app = QtGui.QApplication(sys.argv) 
        bug_window = BugWindow(flags=QtCore.Qt.Window)
        bug_window.show()
        bug_window.err_label.setText(r'<html><head/><body><p align="center"><span style=" font-size:10pt; font-weight:600;">Error message:</span></p><p>'+str(e) +r'</p><p> </p></body></html>')             
        sys.exit(bug_window.exec_())
finally:        
        cnfg.write(options_file)
        options_file.close         
        sys.exit(app.exec_())

до того как поставил sys.exit(bug_window.exec_()) вместо sys.exit(app.exec_()) в перехвате исключения, окно с ошибкой закрывалось но процесс приложения не завершался

Кто шарит в исключениях и PyQt можете объяснить как оно работает?
только пожалуйста попроще...
  • Вопрос задан
  • 2797 просмотров
Решения вопроса 1
@sozforex
Программист, Python
Событие 'клик по кнопке закрытия окна' по умолчанию закрывает окно, но не убивает main event-loop, запущенный выражением 'app.exec_()'.
Event-loop QApplication обычно останавливается сам, когда последнее открытое окно закрывается.
Но это имеет отношение только к окнам без родителя и с флагом Qt.WA_QuitOnClose.
pyqt.sourceforge.net/Docs/PyQt4/qapplication.html#...

Возможно этот флаг не выставлен у BugWindow.
Вы можете добавить этот флаг к виджету BugWindow:
bug_window.setWindowFlags(bug_window.windowFlags() | QtCore.Qt.WA_QuitOnClose)

Или связать событие 'окно закрылось' с остановкой/убиванием event-loop:
class BugWindow(...):
def __init__(...):
self.closed.connect(QtCore.QCoreApplication.instance().quit)

zetcode.com/gui/pyqt4/firstprograms
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы