文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python中tkinter无法同时显示多个image的解决方法及pack与place解析

2023-02-16 12:00

关注

0、问题

在用Tkinter进行编程时,需要在一个Frame下显示多个图片,但是不管怎么设置都是只显示最后一张,就像这样:

代码

for i in range(3):
    ...
    image=ImageTk.PhotoImage(f'img{i}.png')#分别打开img1,img2,img3并显示
    Label(window, image=image, bg='green').place(x=60 + rw * i, y=500)

结果

本来红线处还有两幅图,总共三幅,但是现在只显示了最后一幅。

1、原因

在上述代码最后一行,我们这样写:

Label(window, image=image, bg='green').place(x=60 + rw * i, y=500)

在执行过程中,每个image变量会覆盖上一个image变量,导致运行过程中总是只有1个image参与了绘制,从而只显示一个image

2、解决

给不同的image分别命不同的名,或者干脆用一个List:

image=[]
for i in range(3):
    ...
    image.append(ImageTk.PhotoImage(f'img{i}.png')
    Label(window,image=image[i],bg='green').place(x=60+rw*i,y=500)

补充

pack与place是没有返回值的,所以在需要对要素进行后续操作时,不要直接将该要素的生成和放置写在同一句话中,就像这样:

Label(window, text='直方图:', font=('宋体', 16)).place(x=0, y=60)

最好分开写:

L1=Label(window, text='直方图:', font=('宋体', 16))
L1.place(x=0, y=60)

如果像一开始那样写L1=XXX.place(),那么最终得到的L1将是NoneType

到此这篇关于Python中tkinter无法同时显示多个image的解决方法,pack与place的文章就介绍到这了,更多相关Python tkinter无法同时显示多个image内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯