Как отображать изображения в сетке из цикла в tkinter - PullRequest
0 голосов
/ 25 мая 2019

я хочу отображать изображения в строке и столбцах ... строка должна быть 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 Ответ

2 голосов
/ 25 мая 2019

Менеджер геометрии сетки помещает виджеты в двухмерную таблицу. Главный виджет разбит на несколько строк и столбцов, и каждая «ячейка» в результирующей таблице может содержать виджет. Вы можете прочитать больше об этом здесь .

Чтобы ограничить количество используемых строк, вы можете просто отслеживать, где вы размещаете свои изображения.

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...