可滚动画布中图像上的事件(Python)

2024-04-25 11:58:12 发布

您现在位置:Python中文网/ 问答频道 /正文

希望通过循环将图像的缩略图加载到可滚动区域。因此,我创建了一个包含图像的画布。单击其中一幅图像,会在另一帧中显示较大的图像。所以我需要把文件路径,例如,传递到事件函数。在

这里有一个可滚动区域和一些矩形的例子,这些矩形代表我在这个区域之外的图像。点击Rectangles给我图像信息。但是一旦我把所有的矩形插入可滚动区域,这些矩形在滚动过程中就不会移动。在

我需要改变什么?在

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()

Tags: 图像eventconfigobj区域rootwidthpack
1条回答
网友
1楼 · 发布于 2024-04-25 11:58:12

我找到了如何将画布插入滚动区域的解决方案。现在需要一个窗口循环如下所示:

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'])

相关问题 更多 >