簡體   English   中英

Tkinter:將圖像添加到窗口(使用畫布上的create_window)

[英]Tkinter : Adding image to the window (create_window on the canvas is used)

我想在窗口的右上方添加一個圖像。 這是我要放在此處的圖像: https : //imgur.com/a/YjRWmMh

我嘗試了這個:

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行

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

SyntaxError:(unicode錯誤)“ unicodeescape”編解碼器無法解碼位置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_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)

但是,您寧願使用create_image作為@figbeam的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM