我正在学习使用Python和tkinter作为爱好。
我在不同的地方有两个系统:一个是XP (SP3),另一个是Win7 (SP1)。
这个问题的代码片段如下:
import tkinter
import sys
print (sys.path)
wnd = tkinter.Tk()
wnd.title("Sinewave's window")
wnd.geometry("250x100+10+30")
#this one works in both XP and Windows7
wnd.wm_iconbitmap('C:Python34iconscolours.ico')
#this one works in XP but not in windows 7
#wnd.wm_iconbitmap('./icons/colours.ico') #implied path
wnd.mainloop()
shell窗口显示路径如下:
['C:/Python34/py scripts', 'C:\Python34\py scripts', 'C:\Python34\Lib\idlelib', 'C:\Windows\system32\python34.zip', 'C:\Python34\DLLs', 'C:\Python34\lib', 'C:\Python34', 'C:\Python34\lib\site-packages']
当我在Win7中尝试"隐含"路径时,错误是:
_tkinter.TclError: bitmap "./icons/colours.ico" not defined
我尝试了很多变化,但不能得到"隐含"路径在Win7中工作。
是我错过了什么,还是它不像XP那样工作?
(当然,要尝试这个代码片段,您必须创建文件夹"icons"并定义一个适当的图标)。
对于加载文件,相对路径不是相对于sys.path
的,它应该相对于您当前的工作目录。
sys.path
在python导入模块时使用,它不用于加载文件或tkinter。
对于文件打开和所有,只考虑当前工作目录(除非您给出了完整的绝对路径)。
所以这个问题一定是在Windows 7中发生的,因为可能没有一个icons/colours.ico
文件相对于你运行脚本的目录。