[PythonCE] Tkinter PhotoImage, no such file or directory
Luke Dunstan
coder_infidel at hotmail.com
Sun Apr 30 18:20:44 CEST 2006
----- Original Message -----
From: "Michael Foord" <fuzzyman at voidspace.org.uk>
To: "Patrick Kramer" <pkramer at meton.net>
Cc: <pythonce at python.org>
Sent: Sunday, April 30, 2006 5:57 PM
Subject: Re: [PythonCE] Tkinter PhotoImage, no such file or directory
> Patrick Kramer wrote:
>> <quote who="Luke Dunstan">
>>
>>> You can tell Python using os.chdir(), but that will not necessarily have
>>> any
>>> effect on Tkinter because the operating system has no concept of a
>>> "current
>>> directory", so it depends on whether the image file is opened in the
>>> Python
>>> code or the C code.
>>>
>>> Luke
>>>
>>>
>>
>> So there is no way for python to return the current directory it is in?
>>
>> say something like:
>>
>> dir = return_dir()
>>
>> image_loc = dir + "//BtnGluco.gif"
>>
>> Or:
>>
>> image_loc = dir + "//assets//img//BtnGluco.gif" #This is how I would like
>> to orgnize it
>>
> I think the situation is (perhaps Luke can correct me if I'm wrong) :
>
> The underlying Windows CE platform has no concept of a current directory.
> PythonCE *simulates* a current directory on the python level
Correct.
> This means that calls that use only Python code will work as normal -
> except the current directory will always start in a fixed location
> ('//Temp' I think).
That is true at the moment, but in the next release I will change it so that
if you run a script using the command line then the current directory will
initially be set to the directory containing the script, for convenience.
> Calls to use files from C code will not have access to this information.
> So you can experiment with the image_loc and see if it works using the
> current directory or not, but it may not do.
>
> To get the current directory you use the normal functions provided by
> the ``os`` and ``os.path`` module :
>
> cur_dir = os.getcwd()
> print cur_dir
> os.chdir(""//assets")
> print os.getcwd()
Correct, except that the path separator is \ (or \\ in a string literal) not
//.
> image_path = os.path.join(os.getcwd(), "img//BtnGluco.gif")
or continuing with that pattern:
image_path = os.path.join(os.getcwd(), "img", "BtnGluco.gif")
> You can also test whether you are running on windows CE or not with either
> :
>
> sys.platform or sys.getwindowsversion()
>
> They should return different things on windows CE and normal windows.
> That means you can make your code behave appropriately depending on
> which system it is on.
>
> HTH
>
> Fuzzyman
> http://www.voidspace.org.uk/python/shareware.shtml
That will work, but like Gonzalo I prefer using os.name.
Luke
More information about the PythonCE
mailing list