yarkov
@yarkov
Помог ответ? Отметь решением.

Почему падает Sublime Text 3 при вызове sublime.message_dialog?

Осваиваю написание плагинов для ST3. Взял готовый пример и пытаюсь при выборе символа вывести MessageBox. Вот код:
import os
import sublime
import sublime_plugin


class UnicodeCharacterInsertCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        content = self.get_popup_content()
        self.view.show_popup(content, flags=sublime.HTML, location=-1, max_width=400, on_navigate=self.on_choice_symbol)

    def get_characters_html(self):
        resources = sublime.find_resources('unicode-characters.html')
        content = sublime.load_resource(resources[0])
        return content

    def on_choice_symbol(self, symbol):
        self.view.run_command("insert", {"characters": symbol})
        self.view.hide_popup()
        sublime.message_dialog("message_dialog check: %s" % symbol) # вот тут саблайм падает

    def get_popup_content(self):
        tpl_path = os.path.dirname(os.path.realpath(__file__)) + '/unicode-characters.html'
        content = open(tpl_path, 'r').read()
        return content

Окно выводится, но при нажатии на кнопку ОК или попытке закрыть нажав на крестик, саблайм молча падает. Что я не так делаю?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
yarkov
@yarkov Автор вопроса
Помог ответ? Отметь решением.
Нашел ответ методом тыка. Надо было показывать окошко в асинхронном вызове метода set_timeout_async:
sublime.set_timeout_async(lambda: sublime.message_dialog("message_dialog check: %s" % symbol), 0)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы