Отображение фотографий в ярлыках с помощью инструкции for с помощью tkinter, можно ли это сделать?

Я пытаюсь получить случайный кучу изображений для печати рядом друг с другом; проблема в том, что если я запустил следующий код, все, что происходит, это то, что он создает группу пустых пустых меток. Если я заменю «image = pic» на «text =« whatever », он отлично работает (таким образом, доказывая, что он фактически создает ярлык). Размещение ярлыка и изображения в другом месте отлично работает (доказывая, что это не изображения), даже если я использую «pic = PhotoImage (file = w [0])», он работает (поэтому я не думаю, что это мой метод). ,

from tkinter import * from tkinter import ttk import random root = Tk() root.title("RandomizedPic") def randp(*args): w = ['wb.gif', 'wc.gif', 'wd.gif', 'we.gif'] random.shuffle(w) am = 1 for i in w: pic = PhotoImage(file=i) ttk.Label(mainframe, image=pic).grid(column=am, row=0, sticky=(W, E)) am+=1 mainframe = ttk.Frame(root, padding="3 3 12 12") mainframe.grid(column=0, row=0, sticky=(N, W, E, S)) mainframe.columnconfigure(0, weight=1) mainframe.rowconfigure(0, weight=1) ttk.Button(mainframe, text="Do it", command=randp).grid(column=0, row=0, sticky=W) root.bind('<Return>', randp) root.mainloop() 

Любые советы о том, как заставить это работать, будут высоко оценены.

One Solution collect form web for “Отображение фотографий в ярлыках с помощью инструкции for с помощью tkinter, можно ли это сделать?”

Это известная проблема с tkinter – вы ДОЛЖНЫ сохранить свою собственную ссылку на все фотоизображения, иначе python будет собирать мусор – вот что происходит с вашими изображениями. Просто устанавливая их как изображение для метки, НЕ добавляйте к счету ссылок для объектов изображения.

РЕШЕНИЕ:

Чтобы решить эту проблему, вам понадобится постоянная ссылка на все создаваемые объекты изображения. В идеальном случае это будет структура данных в пространстве имен классов, но поскольку вы не используете какие-либо классы, вам потребуется сделать список модулей:

 pics = [None, None, None, None] # This will be the list that will hold a reference to each of your PhotoImages. def randp(*args): w = ['wb.gif', 'wc.gif', 'wd.gif', 'we.gif'] random.shuffle(w) am = 1 for k, i in enumerate(w): # Enumerate provides an index for the pics list. pic = PhotoImage(file=i) pics[k] = pic # Keep a reference to the PhotoImage in the list, so your PhotoImage does not get garbage-collected. ttk.Label(mainframe, image=pic).grid(column=am, row=0, sticky=(W, E)) am+=1 
  • Почему эта кнопка не центрирована, Tkinter
  • Конфликт Tkinter / Matplotlib вызывает бесконечный mainloop
  • Значение «AttributeError: объект NoneType не имеет атрибута tk»?
  • Создайте окно tkinter python без кнопки X (закрыть)
  • Динамически обновляемый сюжет в matplotlib
  • Инерциальная прокрутка в Mac OS X с Tkinter и Python
  • Объясните метод текстового поиска Tkinter
  • tkFileDialog не преобразовывает результаты в список Python в Windows
  •  
    Interesting Posts for Van-Lav

    разбор вложенных круглых скобок в python, захват содержимого по уровню

    Остановить графический интерфейс pygtk от блокировки во время длительного процесса

    Как найти открытую рамку чтения в Python

    Фильтр dict содержит только определенные клавиши?

    Украсить \ делегировать объект File для добавления функциональности

    Как добавить элемент в xml-файл с помощью elementtree

    Установка jpype в Mountain Lion

    профилирование и обнаружение узкого места применения колбы – текущее время реакции составляет 30 секунд

    Как оценить строку, содержащую символ равенства?

    Iron Python: что хорошего использования для Iron Python

    Python: Объедините "if 'x' in dict" и "for i in dict "

    Поиск тегов с помощью селектора css, но не их потомков

    Альтернативы «persistent_id» рассола?

    Какой самый быстрый способ увеличить контрастность цветного изображения с OpenCV в python (cv2)?

    Печать символов unicode в stdout в python печатает неправильные символы

    Python - лучший язык программирования в мире.