Подсказка на выходе в приложении PyQt

опасаться связывать строки в цикле! стоимость конкатенации строк пропорциональна длине результата. Цикличное выполнение приводит Вас прямо к земле N-squared. Некоторые языки оптимизируют конкатенацию к последний раз выделенной строке, но это опасно для рассчитывания на компилятор для оптимизации квадратичного алгоритма вниз к линейному. Лучше всего использовать примитив (join?), который берет весь список строк, делает единственное выделение и связывает их, все в одном идут.

19
задан Vinay Sajip 12 September 2009 в 10:23
поделиться

1 ответ

Да. Вам необходимо переопределить поведение закрытия по умолчанию QWidget, представляющего ваше приложение, чтобы оно не сразу принимало событие. Базовая структура, которую вы хотите, выглядит примерно так:

def closeEvent(self, event):

    quit_msg = "Are you sure you want to exit the program?"
    reply = QtGui.QMessageBox.question(self, 'Message', 
                     quit_msg, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

    if reply == QtGui.QMessageBox.Yes:
        event.accept()
    else:
        event.ignore()

В учебнике PyQt , упомянутом las3rjock , есть хорошее обсуждение этого. Также ознакомьтесь с ссылками на странице PyQt на Python.org, в частности по официальной ссылке , чтобы узнать больше о событиях и способах их обработки.

51
ответ дан 30 November 2019 в 02:36
поделиться
Другие вопросы по тегам:

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