Форум сайта python.su
Возникла данная проблема. Пишу проверку орфографии для своего проекта и хочу сделать что-то наподобие окошка как в Ворде, то есть показывается сомнительное слово, варианты написания и кнопки с действиями Добавить“, ”Заменить“, ”Пропустить", этк. Так вот, суть сабжа в том, что мне нужно как-то приостановить выполнение основного кода программы(цикл, который проходится по сомнительным словам), пока открыто это окно, а при клике на одну из кнопок — выполнялся определенное действие и цикл шел дальше, пока дойдет до того самого места. Если коротко, то вот такая схема:
Проверка текста на ошибки (уже написано) => цикл проходящий по каждому сомнительному слову => вызывается диалог с возможными словами => цикл останавливается до определенного сигнала (подскажите как реализовать D: ) => сигнал получен, цикл повторяется.
Вот код функции:
def checkErrors(): if not en.dict_exists("ru_RU"): reply = QtGui.QMessageBox.information(None, "У вас не установлен русский словарь Hunspell", 'Проверка невозможна, так как у вам отсутствует нужный словарь Hunspell (ru_RU)') return None if os.path.exists(os.path.expanduser('~/.PyWriter/dict.txt')): #buf_dic = en.DictWithPWL("ru_RU",os.path.expanduser('~/.PyWriter/dict.txt')) text_dic = SpellChecker("ru_RU", filters=[EmailFilter,URLFilter]) else: text_dic = SpellChecker("ru_RU", filters=[EmailFilter,URLFilter]) text = window.editor.toPlainText() text_dic.set_text(text) dic = en.Dict("ru_RU") checker.setWindowModality(QtCore.Qt.ApplicationModal) for err in text_dic: items = tuple(dic.suggest(err.word)) checker.text.setText('Возможно, допущена ошибка в слове "{}" '.format(err.word)) checker.variants.clear() checker.variants.addItems(items) checker.show() # Вот тут нужно подождать checker.hide()
Отредактировано OlegWock (Июль 24, 2014 17:19:37)
Офлайн
checker должен принадлежать QDialog.
# checker.show() -- убрать checker.exec_()
Отредактировано agalen (Июль 25, 2014 15:50:41)
Офлайн