我在 Windows 上的 PyGtk 中。我的程序使用 GraphicsMagick 将 PDF 转换为图像,然后显示图像。多页 PDF 的转换可能会很长,因此程序必须等待命令行返回,我需要解决这个问题并允许用户在创建图像时使用 GUI。到目前为止,我尝试使用 gtk 的线程和 python 的线程都没有奏效,有没有办法轻松地将 GraphicsMagick 转换作为后台进程调用并返回等待它返回?
我正在使用 subprocess(command) 从命令行执行转换。
我在 Windows 上的 PyGtk 中。我的程序使用 GraphicsMagick 将 PDF 转换为图像,然后显示图像。多页 PDF 的转换可能会很长,因此程序必须等待命令行返回,我需要解决这个问题并允许用户在创建图像时使用 GUI。到目前为止,我尝试使用 gtk 的线程和 python 的线程都没有奏效,有没有办法轻松地将 GraphicsMagick 转换作为后台进程调用并返回等待它返回?
我正在使用 subprocess(command) 从命令行执行转换。
只需使用 subprocess.Popen:
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
如果仍有页面要处理,您可以使用空闲函数调用subprocess.Popen()
并返回。True
这意味着它将在下一个可用机会时再次调用。完成页面后,您可以False
从空闲函数返回,并且不再调用它。