Python Tkinter canvas.tag_bind()

标签 python tkinter bind move

我一直在使用 Tkinter 在 Python 上编写这段代码,最终,我将能够单击图片(而不是图片边框中带有 x,y 的特定点,但可以在整个图片边框的任意位置),然后单击屏幕上的任意位置,即可将其 move 到那里。

我的代码:

from Tkinter import *
from PIL import ImageTk, Image

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#Constants~
CLICKED = False

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#Classes and Functions~
class App(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()

def asign_click(event):
    CLICKED = True
    print CLICKED
def new_destination(event, x, y, canvas, picture):
    if CLICKED == True:
        canvas.move(picture, x, y)

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#Main~
myapp = App()
myapp.master.title("DA-I-SUKI!! <3~")
myapp.master.maxsize(2000, 1200)

my_picture = ImageTk.PhotoImage(Image.open("SOME_PICTURE"))
canvas = Canvas(height = my_picture.height(), width = my_picture.width())
canvas.pack(expand=1, fill=BOTH)
picture_pack = canvas.create_image(1130, 500, image = my_picture)

canvas.tag_bind(my_picture, '<1>', asign_click) 
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
myapp.mainloop()

基本上,我希望代码末尾的 tag_bind 能够工作,这样它就可以调用 asign_click(),并将 CLICKED 的常量值更改为 TRUE,然后添加另一个 tag_bind (或其他可以工作的东西),这将允许我单击屏幕上的任意位置并调用 new_destination() ,以便它将图片 move 到新的目的地。

  • 我可能在 new_destination() 函数上放置了错误的参数,仍在处理中。

提前非常感谢。

最佳答案

你只是在 tag_unbind 中犯了一个小错误。 ,根据effbot.org这个方法需要一个标签或者一个id。但你传递的是一个图像对象。每当您调用 create_...从 Canvas 对象返回时会给出一个 id。

所以只需更改您的 canvas.tag_bind(...)线路至 canvas.tag_bind(picture_pack, '<1>', asign_click)

关于Python Tkinter canvas.tag_bind(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32733782/

相关文章:

python - Rosalind 共识和简介 python

python - NameError: name '' is not defined, trying to make a to-do list CLI 应用程序

python - 添加后如何以编程方式更改 tkinter 笔记本选项卡的文本

python-3.x - tkinter,如何获取Entry小部件的值?

python - itertools.combinations() 的输出

python - python 中 epsilon 为 0.0001 的递归平方根循环

python - 应如何在 Tkinter 中显示可滚动的电子表格?

grails - 如何将选择选项值绑定(bind)到类的属性?

c++ - 将左值绑定(bind)到引用

jquery卸载/绑定(bind)可靠的跨浏览器解决方案