我创建了一个新的 Button 对象,但没有指定 command 创建时的选项。Tkinter 有没有办法在创建对象后更改命令(onclick)功能?

有帮助吗?

解决方案

尽管 伊莱·考特赖特 程序会正常工作,但您真正想要的似乎只是在实例化后重新配置您在实例化时可以设置的任何属性的一种方法。您如何做到这一点是通过configure() 方法。

from Tkinter import Tk, Button

def goodbye_world():
    print "Goodbye World!\nWait, I changed my mind!"
    button.configure(text = "Hello World!", command=hello_world)

def hello_world():
    print "Hello World!\nWait, I changed my mind!"
    button.configure(text = "Goodbye World!", command=goodbye_world)

root = Tk()
button = Button(root, text="Hello World!", command=hello_world)
button.pack()

root.mainloop()

1 如果您只使用鼠标,则“很好”;如果您关心按 Tab 键并在按钮上使用 [Space] 或 [Enter],那么您也必须实现(复制现有代码)按键事件。设置 command 选项通过 .configure 容易得多。

² 实例化后唯一不能改变的属性是 name.

其他提示

当然;只需使用 bind 方法来指定创建按钮后的回调。我刚刚编写并测试了下面的示例。您可以在以下位置找到有关执行此操作的不错的教程: http://www.pythonware.com/library/tkinter/introduction/events-and-bindings.htm

from Tkinter import Tk, Button

root = Tk()
button = Button(root, text="Click Me!")
button.pack()

def callback(event):
    print "Hello World!"

button.bind("<Button-1>", callback)
root.mainloop()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top