Создайте кнопку завершения как Eclipse - PullRequest
2 голосов
/ 13 июля 2011

В настоящее время я программирую приложение с графическим интерфейсом на wxPython.Теперь я хочу создать кнопку STOP, которая остановит текущую команду / запрос / задачу Python.

Я уже создал кнопку:

def StopButton(self, event):
        sys.exit(0)

Но она не работает.:( Поскольку моя программа не осознает щелчок по кнопке. Она не реагирует и не отвечает, потому что он все еще занят текущей командой / запросом / заданием.

Ответы [ 2 ]

1 голос
/ 13 июля 2011

В приложениях с графическим интерфейсом пользовательский интерфейс работает в одном, часто основном, потоке.Этот поток инициализирует элементы GUI и ожидает ввода данных пользователем.

Когда вы выполняете другие действия в этом основном потоке, ваши элементы GUI не могут принимать ввод пользователя, потому что вы заняты этими другими вещами.Иногда это то, что вы хотите, чтобы произошло: сейчас это не так.

Взгляните на Поток Python и ознакомьтесь с концепциями.Что вы хотите сделать, так это, когда вы запускаете текущую команду / запрос / задачу, запускаете ее в новом потоке, чтобы, когда вы продолжаете взаимодействовать с вашим графическим интерфейсом, он мог принимать ввод пользователя.

tl; dr: создать новую тему для вашего c / r / t

0 голосов
/ 13 июля 2011

Все приложения с графическим интерфейсом работают в своем собственном потоке. Они в основном работают в бесконечном цикле, ожидая, что пользователь сделает что-то, на что он может ответить. Когда вы запускаете длительный процесс в том же потоке, он блокирует графический интерфейс и не дает ему обновляться. Чтобы обойти это, вы запускаете длительный процесс в другом потоке. См. Одну из следующих статей для получения дополнительной информации:

http://wiki.wxpython.org/LongRunningTasks

http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...