鱼C论坛

 找回密码
 立即注册
查看: 5278|回复: 5

tkinter,label如何实现用button切换图片

[复制链接]
发表于 2017-12-29 17:20:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
             求大大们解答,我试了很多次,文字可以实现点击切换,但是图片却不能换,话说有没有一个类似textvariable的 图片更新变量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-29 17:30:56 | 显示全部楼层

回帖奖励 +5 鱼币

上代码帮你看下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-29 17:31:25 | 显示全部楼层
  1. from tkinter import *
  2. import os
  3. import sys
  4. #分别生成新的图片和文字
  5. def mag(gi):
  6.     for i in gi:
  7.         yield i

  8. def p(f1):
  9.     while True:
  10.         t1 = f1.readline()
  11.         if t1 == '':
  12.             break
  13.         yield t1
  14. # 将button按键和图片,文字迭代关联
  15. #问题就出在文字可以更新显示,图片却只能更改成新图片的大小,却无法显示
  16. def call():
  17.     global t1
  18.     global i
  19.     global f
  20.     var1.set(next(t1))
  21.     #这里就是更换图片的举措,你们看看有问题吗
  22.     f["image"]=next(i),
  23.     b.config(relief=SUNKEN)
  24.     b.config(relief=RAISED)

  25. master = Tk()

  26. frame1 = Frame(master)
  27. frame2 = Frame(master)

  28. #将E盘GIF文件列表化
  29. os.chdir(r'E:\2')
  30. gi = os.listdir(path='.')

  31. #打开文字文本
  32. with open(r'C:\Users\dell\Desktop\一口气全念对.txt') as f1:
  33.     t1 = p(f1)
  34.     i = mag(gi)
  35.     #先设置默认图片
  36.     image1 = PhotoImage(file=r'C:\Users\dell\Desktop\1.gif')


  37.     var1 = StringVar()
  38.     var1.set('一口气全念对')
  39.     f = Label(frame1,
  40.               textvariable=var1,
  41.               justify=LEFT,
  42.               image=image1,
  43.               compound=CENTER,
  44.               font=('方正舒体',32),
  45.               fg = 'red')
  46.     b= Button(frame2,text='提词',command=call)

  47.     f.pack()
  48.     b.pack(side=LEFT,padx=10,pady=10)
  49.     frame1.pack()
  50.     frame2.pack()

  51.     mainloop()

  52.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-29 17:36:15 | 显示全部楼层
我百度了很久,也没找到合适的方法。本来想把这个对象化,然后用函数来更替重新生成一个新的对象,但是最后矛盾了,就算了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-29 18:21:28 | 显示全部楼层
    #这里就是更换图片的举措,你们看看有问题吗
   
    image1['file'] = 'E:\\2\\'+next(i) #更改image1的图片路径

    f.configure(image = image1) #重新设置Label图片


  1. from tkinter import *
  2. import os
  3. import sys

  4. class my_image():
  5.     def __init__(self, imgpath):
  6.         self.imgpath = imgpath
  7.         

  8. #分别生成新的图片和文字
  9. def mag(gi):
  10.     for i in gi:
  11.         yield i

  12. def p(f1):
  13.     while True:
  14.         t1 = f1.readline()
  15.         if t1 == '':
  16.             break
  17.         yield t1
  18. # 将button按键和图片,文字迭代关联
  19. #问题就出在文字可以更新显示,图片却只能更改成新图片的大小,却无法显示
  20. def call():
  21.     global t1
  22.     global i
  23.     global f
  24.    

  25.     var1.set(next(t1))
  26.    
  27.     #这里就是更换图片的举措,你们看看有问题吗
  28.    
  29.     image1['file'] = 'E:\\2\\'+next(i) #更改image1的图片路径

  30.     f.configure(image = image1) #重新设置Label图片
  31.    
  32.     b.config(relief=SUNKEN)
  33.     b.config(relief=RAISED)


  34. master = Tk()

  35. frame1 = Frame(master)
  36. frame2 = Frame(master)

  37. #将E盘GIF文件列表化
  38. os.chdir(r'E:\2')
  39. gi = os.listdir(path='.')

  40. #打开文字文本
  41. with open(r'd:\Users\Administrator\Desktop\一口气全念对.txt') as f1:
  42.     t1 = p(f1)

  43.     i = mag(gi)

  44.     #先设置默认图片
  45.     image1 = PhotoImage(file=r'E:\2\color-change.gif')


  46.     var1 = StringVar()
  47.     var1.set('一口气全念对')
  48.     f = Label(frame1,
  49.               textvariable=var1,
  50.               justify=LEFT,
  51.               image=image1,
  52.               compound=CENTER,
  53.               font=('方正舒体',32),
  54.               fg = 'red')
  55.     b= Button(frame2,text='提词',command=call)

  56.     f.pack()
  57.     b.pack(side=LEFT,padx=10,pady=10)
  58.     frame1.pack()
  59.     frame2.pack()

  60.     mainloop()

  61.    
复制代码

评分

参与人数 1鱼币 +5 收起 理由
JAY饭 + 5 哇,太感谢了,谢谢谢

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-29 19:21:44 | 显示全部楼层
ba21 发表于 2017-12-29 18:21
#这里就是更换图片的举措,你们看看有问题吗
   
    image1['file'] = 'E:\\2\\'+next(i) #更改ima ...

我想问一下,你用的这个configure它是什么意定义,这个函数没见过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-26 19:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表