给定一个带有命令的tkinter按钮,我想复制它的函数调用,以便在另一个按钮被按下时复制它。我试过这样做:
import tkinter as tk
root = tk.Tk()
btn1 = tk.Button(root, text='Button 1', command=lambda: print('Button hit'))
btn2 = tk.Button(root, text='Button 2', command=None)
# Here the magic should occur
btn2.configure(command=btn1.configure()['command'])
btn1.grid(row=0, column=0)
btn2.grid(row=1, column=0)
root.mainloop()
但遗憾的是,按钮2没有调用该函数。
这里是问题的简化版本。实际上,这两个按钮位于脚本的两个非常不同的部分,因此移动函数非常不方便。
作为参考,我已经分两步解决了这个问题。
- 在建议的代码中,我错误地使用
btn1.configure()['command']
而不是@Matiiss正确建议的btn1.cget('command')
。 - 在我的原始代码中,我在将其命令分配给
btn2
后破坏了btn1
,然而这使我失去了命令。用正确的forget
替换destroy
,我能够正确地传递命令。