Я только новичок в платформе Tkinter. Мне нужна помощь. У меня есть изображение плана этажа, на котором будут присутствовать предметы. Я хочу иметь ограничивающий прямоугольник вокруг объектов на изображении. Я могу это сделать. Я знаю координаты объектов через какой-то другой код Matlab. Но проблема в том, что когда я вставляю изображение на холст, оно выходит за пределы экрана, потому что его размер больше, чем окно холста. Я могу изменить размер изображения. Но ограничивающая рамка не будет изменена, так что она не сможет правильно привязать объект. Итак, я хочу масштабировать оси, но не знаю как. Может кто-нибудь помочь мне масштабировать оси? или есть какой-либо другой метод, чтобы изменить размер изображения, и я мог привязать объекты.
Вот мой код
from tkinter import *
from PIL import Image,ImageTk
from tkinter import filedialog
root=Tk()
canvas=Canvas(root,width=400,height=500)
#canvas.pack(fill=BOTH, expand=1)
#canvas.pack()
canvas.grid(row=4,column=0,sticky=(N,W,E,S))
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(4, weight=1)
def click(txt):
global label,btn1,btn2,btn3
btn1.grid_forget()
btn2.grid_forget()
btn3.grid_forget()
if txt=="3-room floorplan":
root.filename=filedialog.askopenfilename(initialdir="C:\\Users\\User\\Desktop\\tkinter_codes\\floorplans\\ROBIN\\Dataset_3rooms",title="Select a file",filetypes=(("jpg files",".jpg"),("all files",".")))
if txt=="4-room floorplan":
root.filename=filedialog.askopenfilename(initialdir="C:\\Users\\User\\Desktop\\tkinter_codes\\floorplans\\ROBIN\\Dataset_4rooms",title="Select a file",filetypes=(("jpg files",".jpg"),("all files",".")))
if txt=="5-room floorplan":
root.filename=filedialog.askopenfilename(initialdir="C:\\Users\\User\\Desktop\\tkinter_codes\\floorplans\\ROBIN\\Dataset_5rooms",title="Select a file",filetypes=(("jpg files",".jpg"),("all files",".")))
#label=Label(root,text=root.filename).pack()
iimg=Image.open(root.filename)
#iimg=iimg.resize((1225,685),Image.ANTIALIAS)
canvas.img=ImageTk.PhotoImage(iimg)
canvas_img=canvas.create_image(4,0,image=canvas.img,anchor="nw")
#canvas.itemconfig(canvas_img, image=canvas.img)
canvas.create_rectangle((32,38,208,122),outline='red')
canvas.create_rectangle((23,685,123,760),outline='red')
#image_label=Label(image=img).grid(row=5,column=2)
def open():
global btn1,btn2,btn3
btn1=Button(root,text="3-room floorplan",command=lambda: click("3-room floorplan"))
btn1.grid(row=1,column=0,sticky=W)
btn2=Button(root,text="4-room floorplan",command=lambda: click("4-room floorplan"))
btn2.grid(row=2,column=0,sticky=W)
btn3=Button(root,text="5-room floorplan",command=lambda: click("5-room floorplan"))
btn3.grid(row=3,column=0,sticky=W)
#clicked.set("Insert")
def onclick(event):
item = canvas.find_closest(event.x, event.y)
#current_color = canvas.itemcget(item, 'fill')
#if current_color == 'black':
canvas.itemconfig(event.x, fill='white')
# else:
canvas.itemconfig(event.y, fill='black')
canvas.bind('<Button-1>', onclick)
#canvas.bind('<Button-1>', onclick)
#canvas.create_line(50, 50, 60, 60, width=2)
#drop=OptionMenu(root,clicked,"3-room floorplan","4-room floorplan","5-room floorplan",command=open)
#drop.pack()
btn=Button(root,text="Insert Floorplan",command=open,pady=5).grid(row=0,column=0,sticky=W)
root.mainloop()