PyWin32/Tix problem, also Python for Delphi
Posted on 2005-04-10
This may get a little convoluted, and spans a couple of topics (I'm posting in both Python and Delphi).
I have written a Delphi application which does PC/SC card reader control and machine control via I/O cards. It runs a scripter which allows the machine control to make servos pass cards over readers, do things to the cards (initialize them, get data from a database and write to them, log results to a database, etc.)
The application uses Python 2.4 and the Python for Delphi interface. I have written a small library of Python functions the user can load and call. Each script runs at a different point in a production line, talking to PLCs to move the line, and the readers to manage the cards.
There is a wish to make a QA station with user interface. Although I can make extensions which will give me Delphi forms, it will be hard to make this user-extensible via the scripter. If I allow the user to use Tix, however, the script writer can build and modify the user interface without modifying source code.
I installed Tix on my PC, using the binary installation which comes with "IDEStudio". I can run IDEstudio, and the demos, in their directory.
However, when I try to run Tix in Python for Windows, or in my Delphi application, I get the same error:
>>> import Tix
>>> root = Tix.Tk()
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
File "C:\python24\lib\lib-tk\Tix.py", line 210, in __init__
self.tk.eval('package require Tix')
TclError: couldn't load library "C:/python24/tcl/tix8.1/tix8183.dll": this library or a dependent library could not be found in library path
However, "C:/python24/tcl/tix8.1/tix8183.dll" does in fact exist, as does the required package file pkgIndex.tcl. I have set the environment variables TIX_LIBRARY and PYTHONHOME to their proper values (PYTHONHOME was needed to get the TIX examples in IDEStudio to work). I have tried making the slashes in both directions (C:/ and C;\), and doubling them. Nothing makes it find the DLL.
I feel as though I'm missing something very small and probably very obvious, but as I'm in a hurry, I'll throw a lot of points at this.