鱼C论坛

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

急求!!Tkinter中的Toplevel是不是不能加图片啊

[复制链接]
发表于 2018-5-2 14:35:39 | 显示全部楼层 |阅读模式

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

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

x
尝试了很多次图片都不显示,我想让Tkinter的子界面显示图片要怎么办呢,就比如说 点击一个按钮出现一行字和一张图,我现在用Toplevel只出现了字 图片不显示
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-5-2 14:46:39 | 显示全部楼层
可能是图片格式不支持,换成gif或者bmp等再试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-2 14:58:52 | 显示全部楼层
BngThea 发表于 2018-5-2 14:46
可能是图片格式不支持,换成gif或者bmp等再试试

不是图片问题,代码如下,点击按钮后就没有图片出现
  1. from tkinter import *

  2. def chengxu():
  3.     master = Tk()
  4.     master.title('123')

  5.     photo=PhotoImage(file='背景.gif')
  6.     lbl_ask = Label(master, text="",image=photo,compound=CENTER)
  7.     lbl_ask.grid(row=1)

  8.     def callback32():
  9.         top=Toplevel()
  10.         top.title('nihao')

  11.         photo=PhotoImage(file='背景.gif')
  12.         MSG=Label(top,text='',image=photo,compound=CENTER)
  13.         MSG.grid(row=1)



  14.     b32 = Button(master, text="321", command=callback32)
  15.     b32.place(relx=0.5,rely=0.2,anchor=CENTER)




  16.     mainloop()

  17. chengxu()
复制代码


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

使用道具 举报

发表于 2018-5-2 15:33:20 | 显示全部楼层
上面的代码第15行注释掉就可以了。函数内那个是局部变量,在程序运行到函数之外后会被清理掉。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-2 16:10:06 | 显示全部楼层
elang696 发表于 2018-5-2 15:33
上面的代码第15行注释掉就可以了。函数内那个是局部变量,在程序运行到函数之外后会被清理掉。

上面那个代码简化了,我的代码具体可以概括如下,我想根据用户输入的电影名称显示电影的图片,而图片的名字就是电影名称+.gif  例如唐人街探案的图片就是唐人街探案.gif,根据这个要求我写了如下代码,但是发现图片无法显示,望解答!程序中text部分的函数输出值我也省略了
  1. from tkinter import *

  2. def chengxu():
  3.     master = Tk()
  4.     master.title('混合推荐系统')

  5.     photo=PhotoImage(file='背景.gif')

  6.     lbl_ask = Label(master, text="",image=photo,compound=CENTER)
  7.     lbl_ask.grid(row=1)


  8.     def callback31():
  9.             top=Toplevel()
  10.             
  11.             Label(top,text='请输入要查询的电影名称').grid(row=0)
  12.             e=Entry(top)
  13.             e.grid(row=0,column=1,padx=10,pady=5)

  14.             def show():
  15.                 top=Toplevel()
  16.                 top.title('电影资料')
  17.                
  18.                 photo=PhotoImage(file=e.get()+'.gif')
  19.                 msg=Label(top,text='',image=photo,compound=CENTER)
  20.                 msg.grid(row=1)
  21.                     


  22.             Button(top,text='获取信息',width=10,command=show).grid(row=2,column=0,sticky=W,padx=10,pady=5)
  23.             Button(top,text='退出',width=10,command=top.quit).grid(row=2,column=1,sticky=E,padx=10,pady=5)





  24.     b31 = Button(master, text="电影类型查询", command=callback31)
  25.     b31.place(relx=0.5,rely=0.3,anchor=CENTER)




  26.     mainloop()

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

使用道具 举报

发表于 2018-5-3 09:34:04 | 显示全部楼层
本帖最后由 elang696 于 2018-5-3 09:40 编辑
lizhe12321 发表于 2018-5-2 16:10
上面那个代码简化了,我的代码具体可以概括如下,我想根据用户输入的电影名称显示电影的图片,而图片的名 ...


代码的25和26行之间插一行,如下
  1. msg=Label(top,text='',image=photo,compound=CENTER)
  2. **msg.photo = photo**
  3. msg.grid(row=1)
复制代码


这行代码的作用是给Label的实例增加一个photo属性,这样只要msg还没销毁,被它引用的photo就不能销毁
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-29 22:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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