Python中tkinter无法同时显示多个image的解决方法及pack与place解析
作者:ShineLee 时间:2021-05-10 10:23:47
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
来源:https://www.cnblogs.com/ShineLeBlog/p/15776945.html
标签:Python,tkinter,无法同时显示多个image,pack,place
0
投稿
猜你喜欢
浅析php中array_map和array_walk的使用对比
2023-09-10 22:22:28
详解JavaScript中的Object.is()与"==="运算符总结
2024-04-22 12:50:25
CSS expression在IE8里正式退出历史舞台
2008-10-26 16:57:00
python not关键字实例用法
2023-12-05 10:25:50
通过pycharm使用git的步骤(图文详解)
2023-07-24 14:43:21
名片管理系统python版
2021-08-06 01:50:15
JS中判断null、undefined与NaN的方法
2024-04-19 09:54:05
Vue动态路由缓存不相互影响的解决办法
2024-05-13 09:44:16
《写给大家看的设计书》阅读笔记之重复原则
2009-07-12 15:36:00
sql 删除表中的重复记录
2024-01-16 01:12:29
selenium+python自动化测试之环境搭建
2022-05-15 13:51:32
python爬虫模拟登录之图片验证码实现详解
2022-06-30 00:07:29
使用Python计算玩彩票赢钱概率
2023-03-31 08:31:25
oracle 集合
2009-06-19 18:09:00
Go并发编程sync.Cond的具体使用
2024-05-13 10:41:00
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2022-01-14 17:40:55
Python中正则表达式的用法总结
2021-04-23 17:04:49
python实现rsa加密实例详解
2021-08-24 03:32:51
Python查找算法之插补查找算法的实现
2021-03-12 08:16:57
python3 cookbook中常遇问题解答
2022-09-07 09:07:05