如何为PIL Python库添加Tkinter支持

时间:2010-07-08 02:26:54

标签: python compilation python-imaging-library tkinter

好吧,据说PIL应该能够自动与Tkinter合作,但我的不是。我在成像目录Tk目录中找到了这个文本文件。

Using PIL With Tkinter 

Starting with 1.0 final (release candidate 2 and later, to be
precise), PIL can attach itself to Tkinter in flight.  As a result,
you no longer need to rebuild the Tkinter extension to be able to
use PIL.

However, if you cannot get the this to work on your platform, you
can do it in the old way:

* Adding Tkinter support

1. Compile Python's _tkinter.c with the WITH_APPINIT and WITH_PIL
   flags set, and link it with tkImaging.c and tkappinit.c.  To
   do this, copy the former to the Modules directory, and edit
   the _tkinter line in Setup (or Setup.in) according to the
   instructions in that file.

   NOTE: if you have an old Python version, the tkappinit.c
   file is not included by default.  If this is the case, you
   will have to add the following lines to tkappinit.c, after
   the MOREBUTTONS stuff:

  {
      extern void TkImaging_Init(Tcl_Interp* interp);
      TkImaging_Init(interp);
  }

   This registers a Tcl command called "PyImagingPhoto", which is
   use to communicate between PIL and Tk's PhotoImage handler.

   You must also change the _tkinter line in Setup (or Setup.in)
   to something like:

   _tkinter _tkinter.c tkImaging.c tkappinit.c -DWITH_APPINIT
  -I/usr/local/include -L/usr/local/lib -ltk8.0 -ltcl8.0 -lX11

不幸的是我不知道怎么做这个,我在网上找不到任何指南。有人可以告诉我如何使用标志设置编译Python的_tkinter.c等等吗?

1 个答案:

答案 0 :(得分:0)

您使用的是什么版本的Python和PIL(以及在什么平台上使用)?所有合理的最新版本应该已经支持所有这些必需的选项(使用setup.py以及Modules / Setup.dict) - 例如,包括tkappinit.c等 - 所以特别难以知道在真空中建议什么”。此外,如何编译(假设您确实需要)可能非常依赖于平台,因此如果您确实需要重新编译(可能不太可能),了解您的平台可能很重要。