我正在学习使用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:\Python34\icons\colours.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”并定义合适的图标)。
答案 0 :(得分:1)
对于加载文件,相对路径与sys.path
无关,它应该与您当前的工作目录相关。
sys.path
,它不用于加载文件或用于tkinter。
对于文件打开,只考虑当前的工作目录(除非你给出了完整的aboslute路径)。
因此,必须在Windows 7中出现此问题,因为可能没有相对于运行脚本的目录的icons/colours.ico
文件。它可能出现在Windows XP中。