如何从Tkinter中的循环显示网格中的图像

时间:2019-05-25 17:42:54

标签: python tkinter

我要在行和列中显示图像...行应为4 ...图像的数量将是随机的..

import tkinter as tk
from PIL import Image, ImageTk
from urllib.request import urlopen
from io import BytesIO

root = tk.Tk()

#number of urls will be random
URL_list = ["urls","urls","urls"]


for url in URL_list:

    u = urlopen(url)
    raw_data = u.read()
    u.close()

    im = Image.open(BytesIO(raw_data))
    photo = ImageTk.PhotoImage(im)

    label = tk.Label(image=photo)
    label.image = photo
    label.pack()

root.mainloop()

my output

1 个答案:

答案 0 :(得分:2)

网格几何管理器将小部件放在二维表中。主窗口小部件分为许多行和列,结果表中的每个“单元格”都可以容纳一个窗口小部件。您可以详细了解here

要限制使用的行数,您只需跟踪放置图像的位置即可。

import tkinter as tk
from PIL import Image, ImageTk
from urllib.request import urlopen
from io import BytesIO

root = tk.Tk()

#number of urls will be random
URL_list = ["urls","urls","urls"]

MAX_ROWS = 4
current_row = 0
current_column = 0

for url in URL_list:

    u = urlopen(url)
    raw_data = u.read()
    u.close()

    im = Image.open(BytesIO(raw_data))
    photo = ImageTk.PhotoImage(im)

    label = tk.Label(image=photo)
    label.image = photo
    label.grid(row = current_row, column = current_column)
    current_row += 1
    if (current_row >= 4):
        current_column += 1
        current_row = 0

root.mainloop()

这将按照以下顺序放置图像:

1 5 9
2 6 10
3 7 ...
4 8 
相关问题