из групп новостей:
Я использую Python 1.5 под Redhat Linux 5.0. Я пытаюсь выяснить
лучший способ отловить SIGINT (или Ctrl-C) при использовании tkinter. к
проиллюстрируйте мою проблему, сделайте следующее ...
- Сборка Python-1.5 с включенным tkinter.
- Перейдите в каталог Demo / tkinter / guido под Python-1.5.
построить дерево.
- Введите «python imageview.py image-file», где «image-file» - это
полный путь к отображаемому изображению.
- как только изображение всплывет, убедитесь, что фокус окна
удерживается окном xterm, из которого команда "python ..."
был только что вызван.
- нажмите Ctrl-C.
На данный момент ничего не происходит. Ctrl-C, кажется, игнорируется.
Но сейчас ...
- не нажимая больше клавиш на клавиатуре, установите окно
фокус на окно отображаемого изображения.
Как только это окно получает фокус, начинает действовать Ctrl-C.
Мой вопрос таков: есть ли способ реструктурировать
Программа imageview.py, чтобы она отвечала на SIGINT (Ctrl-C)
немедленно, без необходимости устанавливать фокус окна на отображаемый
сначала изображение?
Заранее спасибо за любую помощь, которую вы, ребята, можете оказать мне.
То, что вы видите, вызвано тем, как обрабатываются обработчики сигналов.
Вы застряли в главном цикле Tcl / Tk, и обработчики сигналов только
обрабатывается интерпретатором Python. Быстрый обходной путь заключается в использовании
after () для планирования фиктивной функции, которая будет вызываться раз в секунду или около того
- это заставит появиться , что ваш сигнал будет обработан своевременно
образом.
- Гвидо ван Россум