如何在tkinter中设置键盘键以使用功能?

时间:2019-01-16 18:42:26

标签: python tkinter

我想设置我的tkinter程序,以便它会调用特定的功能(在这种情况下,当我按下Enter键时,将调用self.executecommand(),以消除对self.open_button的需求。有没有办法编写代码,以便当我按Enter键时,它将调用该函数?

此代码(是较大代码的一部分)基本上在Windows中执行命令。它可以在不允许用户运行cmd.exe的计算机上运行。我到处查看了堆栈溢出,堆栈交换和其他一些网站,但找不到适合我的代码的任何内容。

class App2(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.grid()
        self.create_buttons()

    def create_buttons(self):
        self.open_button = tk.Button(self)
        self.open_button['text'] = 'Run'
        self.open_button.grid(row=1, column=2)
        self.open_button['command'] = self.executecommand

        self.text_input = tk.Entry(self)
        self.text_input.grid(row=1, column=1)

    def executecommand(self):
        self.command = self.text_input.get()
        from subprocess import call
        call(self.command)
root = tk.Tk()
app = App2(master=root)
app.mainloop()

1 个答案:

答案 0 :(得分:0)

您可以为<Key-Return>事件创建绑定:

    self.text_input.bind("<Key-Return>",
                         lambda event: self.executecommand())

请参见bindkeysyms。请注意,与command属性不同,绑定是通过事件参数调用的,因此使用了lambda。

subprocess.call需要一个序列作为命令参数,因此您可能使用类似以下的内容:

    call([self.command], shell=True)

(通常,shell=True是不安全的,但在这种情况下可能还可以。)