滚动条不移动 Tkinter 中的图像
Scrollbar not moving the image in Tkinter
我正在尝试将几张图片放到 canvas 上。就图像出现而言,以下工作。但是滚动条不起作用。我已经尝试了所有我能找到的建议(以我的菜鸟 'trial and error' 方式)。
任何人都可以解释我哪里出错了。
class popup :
def __init__(self, item):
popup=Toplevel(width=1400, height=800)
popup.title("Search results")
frame=Frame(popup,width=1400,height=800)
frame.pack()
B1=Button(frame, text="Close", command=popup.destroy)
B1.pack(side=TOP, pady=10)
print( Pattout.findings )
canvas=Canvas(frame, width=1400, height=800, scrollregion=(0,0,5000,1800))
hbar=Scrollbar(frame,orient=HORIZONTAL)
hbar.pack(side=BOTTOM,fill=X)
hbar.config(command=canvas.xview)
vbar=Scrollbar(frame,orient=VERTICAL)
vbar.pack(side=RIGHT,fill=Y)
vbar.config(command=canvas.yview)
canvas.config(width=1400, height=800)
canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
canvas.pack(side=LEFT, expand=True, fill=BOTH)
for i in Pattout.findings :
print( i )
photo=PhotoImage(file="./patterns/"+i[0]+".gif")
label=Label(canvas, image=photo)
label.image=photo
label.pack(side=LEFT, padx=10)
我也试过 canvas.create_image
(如下所示),但找不到阻止 Python 垃圾收集器删除第一张图像的方法。
x = 10
y = 20
for i in Pattout.findings :
print( i )
self.photo = PhotoImage(file="./patterns/"+i[0]+".gif")
self.item=canvas.create_image(x, y, anchor=NW, image=self.photo)
x += 560
canvas 只会滚动 canvas 个对象。对于小部件,这意味着将小部件添加到 canvas 和 create_window
。打包在 canvas 中的小部件不会滚动。
防止图像被垃圾回收的最简单方法是将它们保存到列表中:
canvas.images = []
for i in Pattout.findings :
print( i )
photo = PhotoImage(file="./patterns/"+i[0]+".gif")
self.item=canvas.create_image(x, y, anchor=NW, image=photo)
canvas.images.append(photo)
x += 560
我正在尝试将几张图片放到 canvas 上。就图像出现而言,以下工作。但是滚动条不起作用。我已经尝试了所有我能找到的建议(以我的菜鸟 'trial and error' 方式)。
任何人都可以解释我哪里出错了。
class popup :
def __init__(self, item):
popup=Toplevel(width=1400, height=800)
popup.title("Search results")
frame=Frame(popup,width=1400,height=800)
frame.pack()
B1=Button(frame, text="Close", command=popup.destroy)
B1.pack(side=TOP, pady=10)
print( Pattout.findings )
canvas=Canvas(frame, width=1400, height=800, scrollregion=(0,0,5000,1800))
hbar=Scrollbar(frame,orient=HORIZONTAL)
hbar.pack(side=BOTTOM,fill=X)
hbar.config(command=canvas.xview)
vbar=Scrollbar(frame,orient=VERTICAL)
vbar.pack(side=RIGHT,fill=Y)
vbar.config(command=canvas.yview)
canvas.config(width=1400, height=800)
canvas.config(xscrollcommand=hbar.set, yscrollcommand=vbar.set)
canvas.pack(side=LEFT, expand=True, fill=BOTH)
for i in Pattout.findings :
print( i )
photo=PhotoImage(file="./patterns/"+i[0]+".gif")
label=Label(canvas, image=photo)
label.image=photo
label.pack(side=LEFT, padx=10)
我也试过 canvas.create_image
(如下所示),但找不到阻止 Python 垃圾收集器删除第一张图像的方法。
x = 10
y = 20
for i in Pattout.findings :
print( i )
self.photo = PhotoImage(file="./patterns/"+i[0]+".gif")
self.item=canvas.create_image(x, y, anchor=NW, image=self.photo)
x += 560
canvas 只会滚动 canvas 个对象。对于小部件,这意味着将小部件添加到 canvas 和 create_window
。打包在 canvas 中的小部件不会滚动。
防止图像被垃圾回收的最简单方法是将它们保存到列表中:
canvas.images = []
for i in Pattout.findings :
print( i )
photo = PhotoImage(file="./patterns/"+i[0]+".gif")
self.item=canvas.create_image(x, y, anchor=NW, image=photo)
canvas.images.append(photo)
x += 560