Tkinter - 使用多个键绑定

Tkinter - Using multiple key-binds

我编写了一个程序,它在单击时绘制一个椭圆(鼠标单击=起点,鼠标释放=终点),如下面的代码所示,我想添加 if 条件:当 shift 键在绘制过程中被按下,它会平衡坐标,因此,一个圆(或完美的椭圆,如果你愿意的话)将被绘制出来。

from tkinter import *
def draw(event):
    if str(event.type)=='ButtonPress':
        canvas.old_coords=event.x,event.y
    elif str(event.type)=='ButtonRelease':
        x,y=event.x,event.y
        x1,y1=canvas.old_coords
        canvas.create_oval(x,y,x1,y1)
canvas=Canvas()
canvas.pack()
canvas.bind('<B1-Motion>',draw)
canvas.bind('<ButtonPress-1>',draw)
canvas.bind('<ButtonRelease-1>',draw)

我怎么可能考虑到按下 shift 然后画一个圆?

所以,我找到了一个名为 keyboard 的 Python 模块,我使用它解决了我的问题,添加了这个条件:

if keyboard.is_pressed('shift'):
    if y>y1: y=y1+abs(x-x1)
    else: y=y1-abs(x-x1)

它改变了终点坐标,然后相应地绘制圆