希望通过循环将图像的缩略图加载到可滚动区域中。因此我创建了一个包含图像的画布。通过单击其中一个图像,较大的版本应出现在另一个帧中。所以我需要转移,例如事件函数的文件路径。
这是一个带有可工作的可滚动区域和一些矩形的示例,这些矩形代表我在该区域之外的图像。单击重新校正可以获得图像信息。但是只要我将所有矩形插入可滚动区域,矩形就不会在滚动过程中移动。
我需要改变什么?
import Tkinter as tk
from ttk import *
def OnClick(event, obj):
print "you clicked on", obj
for path, objectname in filedict.items():
if objectname == obj:
print path
root = tk.Tk()
canv = tk.Canvas(root, width=200, height=200, bg='green')
sbarV = Scrollbar(root, orient="vertical")
sbarV.config(command=canv.yview)
sbarV.pack(side="right", fill="y")
canv.config(yscrollcommand=sbarV.set)
canv.pack(side="right", fill="y")
canv.pack_propagate(0)
canv.create_text(7,7,width=185, anchor="nw", font=("Arial", 7), text='example')
filedict = {}
for i in range(10):
filedict[str(i) + '.jpg'] = tk.Canvas(root, width=50, height=30, bg='red')
filedict[str(i) + '.jpg'].pack()
filedict[str(i) + '.jpg'].create_rectangle(0,0,20,20, fill="black", tags=str(i))
filedict[str(i) + '.jpg'].bind("<1>", lambda event, obj=filedict[str(i) + '.jpg']: OnClick(event, obj))
canv.config(scrollregion=(0,0,300,1000))
root.mainloop()
答案 0 :(得分:0)
我找到了如何将画布插入滚动区域的解决方案。现在需要一个窗口,循环看起来像这样:
for i in range(10):
filedict[str(i) + '.jpg'] = tk.Canvas(canv, width=50, height=30, bg='red')
filedict[str(i) + '.jpg'].pack()
filedict[str(i) + '.jpg'].create_rectangle(0,0,20,20, fill="black", tags=str(i))
filedict[str(i) + '.jpg'].bind("<1>", lambda event, obj=filedict[str(i) + '.jpg']: OnClick(event, obj))
canv.create_window(80,20+i*40, window=filedict[str(i) + '.jpg'])