【问题标题】:Bind a keystroke to a button in Tkinter将击键绑定到 Tkinter 中的按钮
【发布时间】:2020-04-08 09:05:04
【问题描述】:

我是 python 的新手(从今天开始)。我正在寻找自动化我经常做的事情,到目前为止,我已经通过谷歌搜索和尝试我发现的东西获得了 40% 的需求。

我正在尝试生成一个计数器,当我单击按钮时,我希望计数器增加 - 我有这个工作...

from tkinter import *

root = Tk()

#Definitions of the fruit, links in with buttons with e1/2/3 
def Appleadd_1(event):
    value = int(e1.get())
    value += 1
    e1.delete(0, 'end')
    e1.insert(0, value)


def Pearadd_1():
    value = int(e2.get())
    value += 1
    e2.delete(0, 'end')
    e2.insert(0, value)


def Grapeadd_1():
    value = int(e3.get())
    value += 1
    e3.delete(0, 'end')
    e3.insert(0, value)


#text boxes for counts
e1 = tk.Entry(root)
e1.insert(0, 0) 
e1.pack()

e2 = tk.Entry(root)
e2.insert(0, 0) 
e2.pack()

e3 = tk.Entry(root)
e3.insert(0, 0) 
e3.pack()


#buttons
bt1 = tk.Button(root, text="Apples", command=Appleadd_1)
bt1.bind("<q>" , )
bt1.pack() 

bt2 = tk.Button(root, text="Pears", command=Pearadd_1)
bt2.pack()
bt2.bind("1", bt2)

bt3 = tk.Button(root, text="Grapes", command=Grapeadd_1)
bt3.pack()


root.mainloop() 

虽然它看起来很难看,但它可以工作,我刚刚找到了如何放置东西而不是使用pack()

我无法开始工作的一件事是将键盘键绑定到我创建的按钮。有可能吗?

任何帮助将不胜感激!

谢谢

【问题讨论】:

标签: python tkinter


【解决方案1】:

首先,通过重写代码以使用 OOP,您会收获很多。与许多其他工具包一样,Tkinter 在使用继承和类将小部件组合在一起时效果最佳。

至于您的实际问题,是的,您可以将函数绑定到 tkinter 中的击键,这相对容易。

import tkinter as tk

def on_button_click(self, event=None): # command= takes a function with no arguments while .bind takes a function with one argument
    print("Clicked the button!")

root = tk.Tk()
button = tk.Button(root, text="Click me!", command=on_button_click)
root.bind("<Control-a>", on_button_click)

请注意,您可以将多个按键绑定到函数。您还可以绑定鼠标事件,如滚动、单击或拖动鼠标,各种键绑定组合,如 Shift+Tab 或 Ctrl+F,以及其他事件,如窗口更改大小时触发的 &lt;Configure&gt; 事件,或 @当您将鼠标悬停在绑定的小部件上时会触发 987654323@ 和 &lt;Leave&gt; 事件。

你必须小心,因为默认情况下,一个新的绑定将替换现有的绑定(除非你传入 '+' 作为绑定方法的第三个参数),并且会触发当前聚焦的小部件的回调(当适用)。对于通用绑定,您应该尽可能将它们绑定到根小部件。

【讨论】:

  • 谢谢,这非常有用。经过更多的阅读和反复试验,我意识到我将无法使用 Tkinter,因为我只能在窗口处于焦点时按下按钮!理想情况下,我想要在后台运行一些东西,所以我会重新开始。谢谢你的意见
猜你喜欢
  • 1970-01-01
  • 2012-10-30
  • 2014-03-23
  • 1970-01-01
  • 2021-10-09
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多