Pygtk пронизывает длинный процесс командной строки - PullRequest
1 голос
/ 31 марта 2011

Я в PyGtk на Windows.Моя программа конвертирует PDF в изображения с помощью GraphicsMagick, а затем отображает изображение.Преобразование может быть очень длинным в многостраничных PDF-файлах, поэтому программе нужно дождаться возврата командной строки, и мне нужно обойти это и позволить пользователю использовать графический интерфейс при создании изображения.Мои попытки использовать многопоточность gtk и python не удавались, есть ли способ легко вызвать преобразование GraphicsMagick как фоновый процесс и returnot ждать его возврата?

Я использую подпроцесс (команду)выполнить преобразование из командной строки.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Просто используйте подпроцесс. Откройте:

import subprocess
subprocess.Popen(["command", "arg1", "arg2"])

Для получения дополнительной информации см .: http://docs.python.org/library/subprocess.html#using-the-subprocess-module

Если вам действительно нужно использовать потоки, используйте gtk.gdk.threads_init() перед gtk.main()

http://library.gnome.org/devel/pygtk/stable/gdk-functions.html#function-gdk--threads-init

0 голосов
/ 02 апреля 2011

Вы можете использовать функцию ожидания, которая вызывает subprocess.Popen() и возвращает True, если еще есть страницы, которые нужно обработать. Это означает, что он будет вызван снова при следующей доступной возможности. Когда вы закончите со страницами, вы можете вернуть False из функции ожидания, и она больше не будет вызываться.

...