避坑!!Tkinter图像加载在二级界面

以为利用Pillow库一级一级加载在界面就完事了,没有想到用Frame控件的时候,第一级界面图片可以显示,但第二级界面就不显示图片了。查了下资料,说是“多个函数包含导致图片无法显示的问题,即(def(def(def)))多函数包含问题”,正解是要把显示的图像变量设为全局变量去调用。
解决办法如下:
(程序裁剪了大部分,有点粗糙,但解决了二级图片加载不出来的问题,见谅😄)

from tkinter import *   #需要安装tkinter库
import tkinter.messagebox
from PIL import Image, ImageTk

#加载图片的函数
photo = None **#设定一个全局变量!!!!**
def show_photo(filename,x,y):
    photo_open = Image.open(filename) 
    global photo  
    photo = photo_open.resize((x , y))#图片尺寸
    photo = ImageTk.PhotoImage(photo)
    return photo
    
#二级界面为购物界面
def Online_Shopping():
    print('在线购物')
    main_frame.place_forget()
    second_frame = Frame(top)
    second_frame.place(relwidth=160,relheight= 2)

    #加载“可乐”图片
    img4 = show_photo("kele.png",69,108)
    Label(second_frame,text= '照片', image = img4).place(x= 70,y = 100 )
    Button4 = Button(second_frame,text = '可乐 2元',bg = 'white',font = ('黑体',12), width=13).place(x = 50,y = 230)

top = Tk()
top.title("无人超市")
top.geometry('800x600')
#一级界面
main_frame = Frame(top)
main_frame.place(relwidth=30,relheight= 2)
#加载“在线购物”图片
img1 = show_photo("12.png",150,150)
Label(main_frame,text= '在线购物', image =img1).place(x= 90,y =180 )
 #“在线购物”按钮
Button1 = Button(main_frame,text = '在线购物',bg = 'green',font = ('黑体',12),width = 15,height = 4,command = Online_Shopping)
Button1.place(x= 100,y = 350)

top.mainloop()

效果如下:
1.一级界面
在这里插入图片描述
2.二级界面
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值