首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在tkinter中绑定任意特定密钥的KeyRelease?

如何在tkinter中绑定任意特定密钥的KeyRelease?
EN

Stack Overflow用户
提问于 2022-04-17 16:13:17
回答 3查看 150关注 0票数 0

在下面的代码中,我试图使两个不同的矩形分别改变它们的颜色,每次我释放第一个矩形的"d“键和第二个矩形的"f”键(这是因为用户可以自由地按住这两个键中的一个,并且毫不费力地增加点击次数),但是我不知道如何绑定任何特定键的KeyRelease。从tkinter导入*导入时间

代码语言:javascript
复制
def round_rectangle(canvas ,x1, y1, x2, y2, radius=25, **kwargs):
        
    points = [x1+radius, y1,
              x1+radius, y1,
              x2-radius, y1,
              x2-radius, y1,
              x2, y1,
              x2, y1+radius,
              x2, y1+radius,
              x2, y2-radius,
              x2, y2-radius,
              x2, y2,
              x2-radius, y2,
              x2-radius, y2,
              x1+radius, y2,
              x1+radius, y2,
              x1, y2,
              x1, y2-radius,
              x1, y2-radius,
              x1, y1+radius,
              x1, y1+radius,
              x1, y1]

    return canvas.create_polygon(points, **kwargs, smooth=True)

def click_one(event):
    global Clicks
    MainCanvas.itemconfig(FirstButton, fill="#ff0000")
    window.update()
    time.sleep(0.05)
    MainCanvas.itemconfig(FirstButton, fill="#111111")
    Clicks += 1
    ClicksVar.set(Clicks)

def click_two(event):
    global Clicks
    MainCanvas.itemconfig(SecondButton, fill="#ff0000")
    window.update()
    time.sleep(0.05)
    MainCanvas.itemconfig(SecondButton, fill="#111111")
    Clicks += 1
    ClicksVar.set(Clicks)

window = Tk()
window.geometry("960x600")
window.config(bg="#000000")

Clicks = 0
ClicksVar = IntVar()

window.bind("<KeyRelease>", click_one)
window.bind("<KeyRelease>", click_two)

MainCanvas = Canvas(window, width=960, height=600, bg="#000000")
MainCanvas.pack()

FirstButton = round_rectangle(MainCanvas ,385, 255, 475, 345, fill="#111111")
SecondButton = round_rectangle(MainCanvas ,485, 255, 575, 345, fill="#111111")

ClickLabel = Label(MainCanvas, font=("Premium", 15), width=3, height=1, textvariable=ClicksVar, bg="#111111", fg="#777777")
ClickLabel.place(x=462, y=350)

window.mainloop()
EN

回答 3

Stack Overflow用户

发布于 2022-04-17 16:26:38

这就是你问题的答案。如果你的广告是按下键和键盘功能的If -语句,那么你就有了一个特定键的绑定。

代码语言:javascript
复制
def keydown(e):
   print(e.char)

def keyup(e):
    print(e.char)

widget.bind("<KeyPress>", keydown)
widget.bind("<KeyRelease>", keyup)
票数 0
EN

Stack Overflow用户

发布于 2022-04-17 16:51:09

如何在tkinter中绑定任意特定密钥的KeyRelease?

您可以与KeyRelease一起指定特定的密钥。例如,下面的代码在释放"d“键时调用click_one,在释放"f”键时调用click_two

代码语言:javascript
复制
window.bind("<KeyRelease-d>", click_one)
window.bind("<KeyRelease-f>", click_two)

有关事件说明符的权威文档,请参阅tcl/tk手册页中的事件模式

票数 0
EN

Stack Overflow用户

发布于 2022-04-17 16:56:32

当我想要绑定一个键来执行一个操作时,我就使用它。您可以尝试以下方法:

代码语言:javascript
复制
import keyboard

shortcut = "F1"

if keyboard.is_pressed(shortcut):
  <yourcode>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71903472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档