当前位置: 首页 > 面试题库 >

如何将事件绑定到画布项?

程峻
2023-03-14
问题内容

如果我使用画布显示数据,并且希望用户能够单击
在画布上的各种项目上,以获取更多信息或进行交互
从某种程度上来说,最好的办法是什么?
在网上搜索我可以找到有关如何将事件绑定到标记的信息,但是
这似乎比我想要的更间接。我不想对项目分组
使用标记,但在用户单击时有特定的函数调用
画布上的特定项目。


问题答案:

要与“Canvas”对象中包含的对象交互,您需要使用
tag\u bind()格式如下:tag\u bind(item,event=None,callback=None,添加=无)
item参数可以是标记或id。
下面是一个例子来说明这个概念:

from tkinter import *

def onObjectClick(event):                  
    print('Got object click', event.x, event.y)
    print(event.widget.find_closest(event.x, event.y))

root = Tk()
canv = Canvas(root, width=100, height=100)
obj1Id = canv.create_line(0, 30, 100, 30, width=5, tags="obj1Tag")
obj2Id = canv.create_text(50, 70, text='Click', tags='obj2Tag')

canv.tag_bind(obj1Id, '<ButtonPress-1>', onObjectClick)       
canv.tag_bind('obj2Tag', '<ButtonPress-1>', onObjectClick)   
print('obj1Id: ', obj1Id)
print('obj2Id: ', obj2Id)
canv.pack()
root.mainloop()


 类似资料:
  • 问题内容: 如果我使用画布来显示数据,并且希望用户能够单击画布上的各个项目以获取更多信息或以某种方式与其进行交互,那么最好的方法是什么? 在网上搜索,我可以找到有关如何将事件绑定到标签的信息,但这似乎比我想要的更间接。我不想使用标签对项目进行分组,而是在用户单击画布上的特定项目时进行特定的功能调用。 问题答案: 要与包含在对象中的对象进行交互,您需要使用以下格式的对象: item参数可以是标签或I

  • 问题内容: 我只是想知道在Tkinter中是否可以将click事件绑定到画布。 我希望能够在画布上单击任意位置,然后将一个对象移到画布上。我能够提出议案,但是我还没有找到在画布上绑定click事件的方法。 问题答案: 直接取自Effbot关于事件的教程中的示例。 在此示例中,我们使用框架小部件的bind方法将回调函数绑定到名为的事件。运行该程序,然后在出现的窗口中单击。每次单击,都会在控制台窗口中

  • 我正在用canvas构建一个新的Javascript游戏,我想为每个对象添加一个事件监听器。我想画一个有用的操纵杆(箭头),当游戏从智能手机/平板电脑打开。所以,玩家可以通过点击每个箭头来移动角色。 这就是我所拥有的: game.js:

  • 问题内容: 禁用浏览器上下文菜单后,如何右键单击触发一些动作? 我试过了。。。 问题答案: jQuery中没有内置的oncontextmenu事件处理程序,但是您可以执行以下操作: 基本上,我取消了DOM元素的oncontextmenu事件以禁用浏览器上下文菜单,然后使用jQuery捕获mousedown事件,您可以在事件参数中知道按下了哪个按钮。

  • 问题内容: 所以我有Button_1,当单击时,它将使用ajax请求一个新的button_2。两个按钮在我的jquery(document).ready上都有click事件,但是当按钮2添加到页面时,它没有jquery事件。那可能吗? 这是我的页面加载代码: 问题答案: 您必须在 DOM 上创建事件。 REF: http : //api.jquery.com/on/

  • 除了可以使用addEventListener()方法监听某个特定元素上的事件外,也可以使用.on()方法实现批量元素的事件绑定。 .on( event , selector , handler ) event Type: String 需监听的事件名称,例如:'tap' selector Type: String 选择器 handler Type: Function( Event event )