如何在Tkinter按钮初始加载后更换按钮上的图片?
Tkinter按钮图片切换失效的解决方法
你直接给self.button.image赋值的方式不会触发UI更新,Tkinter组件的属性必须通过config()方法修改才能让界面同步变化。
修改后的点击事件代码:
def clicked(self): self.button.config(image=self.otherImage)
为什么原来的代码没用?
Tkinter的组件对象属性和界面显示是分离的,直接赋值self.button.image只是修改了对象的一个属性,但没有通知Tkinter重新渲染按钮,所以界面上的图片不会变。必须调用config()方法来设置组件的image参数,这样才会触发界面更新。
另外你代码里的self.image和self.otherImage都是实例变量,已经保留了图片对象的引用,不用担心被Python的垃圾回收机制回收导致图片不显示的问题,这部分是没问题的。
内容的提问来源于stack exchange,提问作者Jeff Dege
相关产品推荐
相关产品推荐

