解决:python中把label.configure在函数里就无效(点击按钮改变图片)

写了个关于图片的工具的界面,想点按钮图片变一下,没想到就遇到两个坑折腾了2天……分享一下

(ps:错误原理直接代码里=========的注释看)

基本测试代码,显示个图片

from tkinter import *
root = Tk()  #创建窗口
 
photo = PhotoImage(file='pic.png')#pic.png就在工程目录里(和.py在同一个文件夹)
img_label = Label(root, imag=photo).pack()
 
root.mainloop()

嗯……没问题,下一步。


接下来贴个按钮,加个按下要触发的函数

from tkinter import *
root = Tk()  
 
photo = PhotoImage(file='pic.png')
img_label = Label(root, imag=photo).pack()

def start():#===========================================================从这里
    photo1 = PhotoImage (file='start.png')
    img_label.configure(imag=photo1)

button_img = Button(root,text = '开始',command=start).pack()#==========加到这里

root.mainloop()

乍一看没问题,特喵的2个大坑!!!!



1.直接pack()会出现【AttributeError: 'NoneType' object has no attribute 'configure'】错误

按下去直接报错!


感谢https://zhidao.baidu.com/question/391953023941782205.html【解答见:“最佳”答案下的评论】

from tkinter import *
root = Tk()  
 
photo = PhotoImage(file='pic.png')
img_label = Label(root, imag=photo)
img_label.pack()#独立.pack出来!<=====================

def start():
    photo1 = PhotoImage (file='start.png')
    img_label.configure(imag=photo1)

button_img = Button(root,text = '开始',command=start).pack()

root.mainloop()

以为解决了?图样图森破!(接楼下图)摁下去不报错,但是什么都没有出来!


2.图片不globle,会显示不出来(蜜汁错误)

(运行楼上改报错后的代码后按下按钮)???按下去后我的图呢?


感谢https://bbs.csdn.net/topics/390878480

from tkinter import *
root = Tk()  
 
photo = PhotoImage(file='pic.png')
img_label = Label(root, imag=photo)
img_label.pack()

def start():
    global img_label,photo1#要改的label、替换的图片,缺一不可都要global引用!<=======================
    photo1 = PhotoImage (file='start.png')
    img_label.configure(imag=photo1)

button_img = Button(root,text = '开始',command=start).pack()

root.mainloop()

按下去终于达到我要的效果了……真不容易



评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超自然祈祷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值