Python Tkinter:将图像添加到窗口(使用画布上的创建窗口)

Python Tkinter:将图像添加到窗口(使用画布上的创建窗口),python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我想在窗口的右上方添加一个图像。这是我想贴在那里的图片: 我试过这个: photo = PhotoImage(file="C:\Users\sel\Desktop\logo.png") tk.label = Label(canvas, image=photo) canvas.create_window(125,10, window=photo, anchor=tk.NW) 但它不起作用,我犯了这个错误 文件“”,第22行 photo=PhotoImage(file=“C:\Users\se

我想在窗口的右上方添加一个图像。这是我想贴在那里的图片:

我试过这个:

photo = PhotoImage(file="C:\Users\sel\Desktop\logo.png")

tk.label = Label(canvas, image=photo)

canvas.create_window(125,10, window=photo, anchor=tk.NW)
但它不起作用,我犯了这个错误

文件“”,第22行

photo=PhotoImage(file=“C:\Users\sel\Desktop\logo.png”) ^

SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码位置2-3中的字节:截断\UXXXXXXXX转义

import tkinter as tk


window = tk.Tk()
window.configure()

ws = window.winfo_screenwidth()
hs = window.winfo_screenheight()
w = 800  # width for the Tk root
h = 600  # height for the Tk root
x = (ws / 2) - (w / 2)
y = (hs / 2) - (h / 2)

window.geometry('%dx%d+%d+%d' % (w, h, x, y))
canvas = tk.Canvas(window, bg="white", width=800, height=600)
canvas.pack()
canvas_scroll = tk.Scrollbar(canvas, command=canvas.yview)
canvas_scroll.place(relx=1, rely=0, relheight=1, anchor=tk.NE)
canvas.configure(yscrollcommand=canvas_scroll.set, scrollregion=())


#photo = PhotoImage(file="C:\Users\sel\Desktop\logo.png")
#tk.label = Label(canvas, image=photo)
#canvas.create_window(125,10, window=photo, anchor=tk.NW)


l0 = tk.Label(canvas, text="강재 NESTING 최적화 프로그램", font= "calibri 32",fg="royalblue4",bg="white" )
canvas.create_window(125,70, window=l0, anchor=tk.NW)


l1 = tk.Label(canvas, text="MIN")
canvas.create_window(125,150, window=l1, anchor=tk.NW)


l2 = tk.Label(canvas, text="MAX")
canvas.create_window(260,150, window=l2, anchor=tk.NW)


l3 = tk.Label(canvas, text="Sheet 폭(SW)")
canvas.create_window(3,170, window=l3, anchor=tk.NW)

minw_var = tk.DoubleVar()
entry_minw_number = tk.Entry(canvas, textvariable=minw_var)
canvas.create_window(190,180, window=entry_minw_number)

maxw_var = tk.DoubleVar()
entry_maxw_number = tk.Entry(canvas, textvariable=maxw_var)
canvas.create_window(325,180, window=entry_maxw_number)

l4 = tk.Label(canvas, text="Sheet 높이(SH)")
canvas.create_window(3,190, window=l4, anchor=tk.NW)

minl_var = tk.DoubleVar()
entry_minl_number = tk.Entry(canvas, textvariable=minl_var)
canvas.create_window(190,200, window=entry_minl_number)

maxl_var = tk.DoubleVar()
entry_maxl_number = tk.Entry(canvas, textvariable=maxl_var)
canvas.create_window(325,200, window=entry_maxl_number)

l5 = tk.Label(canvas, text="소요 Component 개수")
canvas.create_window(3,210, window=l5, anchor=tk.NW)

rect_var = tk.IntVar()
entry_rect_number = tk.Entry(canvas, textvariable=rect_var)
canvas.create_window(260,220, window=entry_rect_number)

l6 = tk.Label(canvas, text="Area")
canvas.create_window(3,230, window=l6, anchor=tk.NW)

area_var = tk.DoubleVar()
entry_area_number = tk.Entry(canvas, textvariable=area_var)
canvas.create_window(260,240, window=entry_area_number)


window.title("Rectangle Configuration")
window.mainloop()

我认为这是因为您为
create\u window
函数提供了图像,而不是包含图像的标签。尝试改用
create_image

photo = tk.PhotoImage(file=r"C:\Users\sel\Desktop\logo.png")
canvas.create_image(125,10, image=photo, anchor=tk.NW)

我认为这是因为您为
create\u window
函数提供了图像,而不是包含图像的标签。尝试改用
create_image

photo = tk.PhotoImage(file=r"C:\Users\sel\Desktop\logo.png")
canvas.create_image(125,10, image=photo, anchor=tk.NW)

create_window
用于将tkinter的小部件放在画布上

PhotoImage
不是小部件。但是
Label
(内置
PhotoImage
)是一个小部件

因此,请使用
window=label
而不是
window=photo

photo = tk.PhotoImage(file="C:\Users\sel\Desktop\logo.png")
label = tk.Label(canvas, image=photo)
canvas.create_window(125,10, window=label, anchor=tk.NW)

但您更愿意使用@figbeam的答案中的
create_image

create_window
用于将tkinter的小部件放在画布上

PhotoImage
不是小部件。但是
Label
(内置
PhotoImage
)是一个小部件

因此,请使用
window=label
而不是
window=photo

photo = tk.PhotoImage(file="C:\Users\sel\Desktop\logo.png")
label = tk.Label(canvas, image=photo)
canvas.create_window(125,10, window=label, anchor=tk.NW)

但是您更愿意使用@figbeam的答案中的
create_image

什么是“不起作用”呢?它是否显示了错误的图像?正确的形象在错误的地方?它抛出了错误吗?如果是,是什么错误?
create\u窗口
用于将tkinter的小部件放到画布上<代码>照片图像不是小部件<代码>标签(内部带有
照片
)是一个小部件。@BryanOakley我编辑了上面的问题。请看一看“没用”是什么意思?它是否显示了错误的图像?正确的形象在错误的地方?它抛出了错误吗?如果是,是什么错误?
create\u窗口
用于将tkinter的小部件放到画布上<代码>照片图像不是小部件<代码>标签(内部带有
照片
)是一个小部件。@BryanOakley我编辑了上面的问题。请看一看,有个错误。文件“”,第26行photo=tk.PhotoImage(File=“C:\Users\sel\Desktop\logo.png”)^SyntaxError:(unicode错误)“UnicodeScape”编解码器无法解码位置2-3中的字节:截断\UXXXXXXXX转义您必须指定字符串应使用文字反斜杠,而不是通过放置“r”来解释它们在绳子之前。我更新了我的示例。有一个错误。文件“”,第26行photo=tk.PhotoImage(File=“C:\Users\sel\Desktop\logo.png”)^SyntaxError:(unicode错误)“UnicodeScape”编解码器无法解码位置2-3中的字节:截断\UXXXXXXXX转义您必须指定字符串应使用文字反斜杠,而不是通过放置“r”来解释它们在绳子之前。我更新了我的示例。我得到了这个错误。语法错误:(unicode错误)'UnicodeScape'编解码器无法解码位置2-3处的字节:截断的\UXXXXXXXX转义符可能是
\U
“C:\Users\sel\Desktop\logo.png”
-用于将unicode代码放入文本中-使用\\或
/
路径“C:\\Users\\sel\\Desktop\\logo.png”或“C:/Users/sel/Desktop/logo.png”图像周围有一个圆环。窗口的图片和背景匹配,但有一个分隔。我们如何删除它?如果您有新问题,请在新页面上创建新问题。您将有地方放置带有问题的屏幕截图。我收到此错误。语法错误:(unicode错误)“UnicodeScape”编解码器无法对位置2-3的字节进行解码:截断的\UXXXXXXXX转义它可能与
“C:\Users\sel\Desktop\logo.png”
中的
\U
有问题,C:\Users\sel\Desktop\logo.png”或“C:/Users/sel/Desktop/logo.png”路径中使用\\或
/
“图像周围有一个圆环。窗口的图片和背景匹配,但存在分离。如何删除?如果您有新问题,请在新页面上创建新问题。你将有地方把你的问题截图