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

如何在Tkinter中将click事件绑定到Canvas?

归翔
2023-03-14
问题内容

我只是想知道在Tkinter中是否可以将click事件绑定到画布。

我希望能够在画布上单击任意位置,然后将一个对象移到画布上。我能够提出议案,但是我还没有找到在画布上绑定click事件的方法。


问题答案:

直接取自Effbot关于事件的教程中的示例

在此示例中,我们使用框架小部件的bind方法将回调函数绑定到名为的事件。运行该程序,然后在出现的窗口中单击。每次单击,都会在控制台窗口中显示一条消息,例如“在44
63单击”。键盘事件被发送到当前拥有键盘焦点的小部件。您可以使用focus_set方法将焦点移至小部件:

from Tkinter import *

root = Tk()

def key(event):
    print "pressed", repr(event.char)

def callback(event):
    print "clicked at", event.x, event.y

canvas= Canvas(root, width=100, height=100)
canvas.bind("<Key>", key)
canvas.bind("<Button-1>", callback)
canvas.pack()

root.mainloop()

更新: 如果窗口/框架包含像Tkinter.Entry这样的具有键盘焦点的小部件,则上面的示例不适用于“键”事件。推杆:

canvas.focus_set()

在“回调”功能中,将使画布小部件具有键盘焦点,并将导致随后的键盘事件调用“键”功能(直到其他小部件获得键盘焦点)。



 类似资料:
  • 问题内容: 我想在小部件类绑定之后绑定自事件,以便在调用绑定函数时更改小部件的文本。例如,在文本窗口小部件中的内容更改之前,将调用我的绑定。 问题答案: 在您的情况下,发生的事情是您的打印值绑定发生在类绑定之前,而类绑定实际上是在接受用户输入并将其放入小部件中的。有几种方法可以解决此问题。您可以绑定而不是,或者可以使用内置的条目验证功能在每次按键时调用您的代码。使用该解决方案,您将获得所有需要的数

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

  • 问题内容: 以下代码在MS Windows中正常工作(按时脚本将退出): 我试图在“无窗口管理器”的Debian环境中运行它(引导至控制台,运行,它通过(那里唯一的命令)启动脚本)。 该脚本按预期方式启动,但按任何操作均不执行任何操作(我原本希望关闭并返回至文本控制台)。后来我尝试添加,以防万一,但这并没有帮助。 MS Windows和Debian环境之间这种不同行为的原因可能是什么? 问题答案:

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

  • 问题内容: 编程新手,尤其是python和tKinter。如何创建将键“s”绑定到按钮或功能的方法?任何帮助都是极好的。 问题答案: 您需要进行两项更改: 加 到。(绑定到Frame似乎无效。) 当按下时,会被调用。由于Tkinter将发送对象,因此我们还必须将呼叫签名更改为 因此,当按下按钮时,将被设置为默认值,但是当按下按键时, 将被分配给对象。

  • 问题内容: 起作用但是 没有。 我无法在python中绑定+ 。是否有所有可能按键的文档? 问题答案: 用途: 我没有指向这些事件名称的完整列表的链接。这是我收集的部分清单: