Python中tk界面图片显示、隐藏、动态更换

Python中tk界面图片显示、隐藏、动态更换

最近给女朋友写了个小程序,界面用Python的tkinter实现的,但是需要动态更换图片,这让我思考良久,最终阅读一些文章获得解答。不太想总结,所以直接放源代码吧,就是留给自己看的
程序的图片用的Label实现

#-*- coding: utf-8 -*-
from tkinter import *
import random
import datetime

num = 0
lastdata = ''
def solution():
    frm = Tk()
    data = []
    with open('./data/菜单.txt', 'r', encoding='utf-8') as f:
        line = f.readline().replace('\n', '')
        while line:
            data.append(line)
            line = f.readline().replace('\n', '')
    n = len(data)
    frm.title('今天中午吃啥??————孔小凤专属by云京')
    frm.geometry('500x500')
    lucky = random.randint(1,10)
    label1 = Label(frm, text='今天幸运数字:'+str(lucky)+'  这边建议您点'+str(lucky)+'次',font=('宋体','15')).place(relx=0.1,rely=0.0,relheight=0.1,relwidth=0.8)
    listb = Listbox(frm,font=('宋体','30'))
    listb.place(relx=0.1,rely=0.2,relheight=0.3,relwidth=0.8)

    note_gif3 = PhotoImage(file='./data/note.gif')#提示图片
    label_note = Label(frm, image=note_gif3)

    label_img = Label(frm)#美食图片
    def do():
        global num,lastdata
        num += 1
        if num>lucky:
            listb.delete(0,END)
            listb.insert(0, '点了这么多次')
            listb.insert(1, '还没决定呢?')
            listb.insert(2, '说好的吃'+lastdata)
            label_img.place_forget()#隐藏美食图片
            label_note.place(relx=0.3, rely=0.5, relheight=0.4, relwidth=0.4)#显示提示图片
            num = 0
        else:
            choice = random.randint(0, n - 1)
            nowTime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            listb.delete(0, END)
            listb.insert(0, nowTime)
            listb.insert(1,'今天吃'+data[choice])
            lastdata = data[choice]
            label_note.place_forget()

            img_data = './data/'+data[choice]+'.gif'#换成对应的美食图片
            img_gif = PhotoImage(file=img_data)
            label_img.config(image=img_gif)#重新设置label图片(重点)
            label_img.image = img_gif#刷新一下(重点)
            label_img.place(relx=0.1, rely=0.5, relheight=0.4, relwidth=0.8)

    img_gif1 = PhotoImage(file='./data/btn.gif')
    btn = Button(frm, text='吃 啥 ',font=('宋体','25'),image=img_gif1,compound=RIGHT,command=do)
    btn.place(relx=0.35,rely=0.1,relheight=0.1,relwidth=0.3)

    frm.mainloop()

if __name__ == '__main__':
    solution()


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值