如何在python的tkinter中以网格显示图像?

时间:2019-06-08 15:23:44

标签: python-3.x tkinter

我想将照片插入python的tkinter中的网格中,然后以行和列显示这些照片。(行和列的数量取决于您输入的内容)

我尝试使用附加列表将图片插入列表,但是我只能显示其中一列。

from tkinter import *

w = Tk()

w.geometry('1000x800')

p = 'picture.png'

img = PhotoImage(file=p)

for i in range(0, 5):
    photo_list.append(Label(w, image=img))

for j in range(0, len(photo_list)):
    photo_list[j].pack()

我想同时在行和列中显示这些图片。 例如,如果row = 3,column = 3,则输出应为:

[图片] [图片] [图片]

[图片] [图片] [图片]

[图片] [图片] [图片]

1 个答案:

答案 0 :(得分:2)

尝试:

nr = 5 #number of rows
nc = 2 #number of columns

photo_list = []

for i in range(nr*nc):
    photo_list.append(Label(w, image=img))
    photo_list[-1].grid(row=i//nc, column=i%nc)

在这里,我使用grid geometry managerpack geometry manager更轻松地完成您想要的事情。图像逐行放置。
grid接受两个名为rowcolumn的参数,它们是在容器表面上理想绘制的2D网格中小部件的索引(从0开始)。 tkinter可以自动确定网格的尺寸并管理尺寸。