-->

对Tkinter的图片脚本路径双打正斜杠(Path for Tkinter Image script

2019-10-19 05:27发布

我工作的一个图形用户界面通过网络来驱动机器人无线。 我使用图片代替了箭头标签文本。 我能够正确,当我使用此代码显示左箭头PNG图形:

from Tkinter import *
from PIL import Image, ImageTk

root = Tk()

leftImage = ImageTk.PhotoImage(Image.open("C:\Users\usr\Desktop\left.png"))


#rightImage = ImageTk.PhotoImage(Image.open("C:\Users\usr\Desktop\right.png"))

class GUI:

    def __init__(self, master):

        frame = Frame(master)
        frame.grid()


        left = Label(root, image = leftImage)
        left.grid(row=1, column=0)

        #right = Label(root, image = rightImage)
        #right.grid(row=1, column=2)


app = GUI(root)
root.mainloop()

这里是会很奇怪我。 当我删除这些注释上的右箭头,试图包括左,右箭头,我得到一个错误。 错误是:

IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Users\\usr\\Desktop\right.png'

我似乎无法找出原因,它突然变成了“\”到“\ \”在右边箭头的路径。 然而,它不会做左箭头的路径上绘制一个错误。 我敢肯定这两个文件是在正确的地方。 为什么在右图的路径被解释比左不同的任何想法?

Answer 1:

你应该(注意在Windows上使用文件路径原始字符串字面量r双引号前):

leftImage = ImageTk.PhotoImage(Image.open(r"C:\Users\usr\Desktop\left.png"))
rightImage = ImageTk.PhotoImage(Image.open(r"C:\Users\usr\Desktop\right.png"))

它的工作不同的右图因为\r是一个特殊字符(是的,这是一个字符 ,而不是两个) - 回车 。

引用一个伟大的人(和Python文档):

反斜线(\)字符用来逃跑,否则有特殊含义的字符,如换行符,反斜杠本身,或者引用字符。 字符串文字可以任选地用一个字母“r”或“R”为前缀; 这样的字符串被称为原始字符串,并使用不同的规则来解释反斜杠转义序列。



文章来源: Path for Tkinter Image script doubles forward slash