键和鼠标的Tkinter绑定组合



我是tkinter的新手,现在正在处理键或鼠标点击的绑定功能。我正试图通过按住键盘上的一个键,然后按下按钮-1来触发一个功能。用"<c>lt;按钮1>quot;不起作用。请帮忙。

class PyViz:
def __init__(self):
self.window = Tk()
self.window.geometry("1000x500")
self.frame = Frame(self.window, width=2000, height=1000)
self.frame.pack(expand=True, fill=BOTH)
self.canvas = Canvas(
self.frame,
width=2000,
height=1000,
bg="#FAE6FA",
scrollregion=(0, 0, 1000, 1000),
)
self.motion = Motion(
window=self.window,
canvas=self.canvas,
boxes=self.boxes,
connections=self.connections,
)
self.bind_keys()
self.window.mainloop()
def bind_keys(self):
self.window.bind("c <Button-1>", self.motion.add_class_with_click)
self.window.bind("<KeyPress-c> <a>", self.motion.add_class)
class Motion:
def __init__(self, window, canvas, boxes, connections) -> None:
self.window = window
self.canvas = canvas
self.boxes = boxes
self.connections = connections
def add_class(self, event):
"""
green rectangle
"""
rect_uuid = str(uuid.uuid4())
new_rect = Box(color="#98FB98", pos=(10, 10), id=rect_uuid)
new_rect.create_box(self.canvas)
self.boxes["class"].setdefault(rect_uuid, new_rect)
print(self.boxes)
def add_class_with_click(self, event):
"""
green rectangle
"""
print("pressed")
self.add_class(event)
def add_method(self):
"""
orange rectangle
"""
pass

这就是我正在处理的代码。我正试图将键c和按钮1绑定到一个函数。答案的例子在我运行它时有效,但由于某种原因,在这里使用解决方案时不起作用。

要绑定多个键,请按顺序一次指定每个键。

例如,为了将";a";键,然后点击按钮,您将执行root.bind("a <Button-1>", func)

在您的问题中,您希望绑定任意键+鼠标单击。为此,请使用root.bind("<Key> <Button-1>"):

from tkinter import *

def pressed(a):
print("Pressed")

root = Tk()
root.bind("<Key> <Button-1>", pressed)
root.mainloop()

最新更新