我想设置我的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()
答案 0 :(得分:0)
您可以为<Key-Return>
事件创建绑定:
self.text_input.bind("<Key-Return>",
lambda event: self.executecommand())
请参见bind
和keysyms
。请注意,与command
属性不同,绑定是通过事件参数调用的,因此使用了lambda。
subprocess.call
需要一个序列作为命令参数,因此您可能使用类似以下的内容:
call([self.command], shell=True)
(通常,shell=True
是不安全的,但在这种情况下可能还可以。)