Отображение фотографий в ярлыках с помощью инструкции 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 
  • номера сортировки python ttk treeview
  • Можно ли прокручивать содержимое столбца Treeview, а не окно столбца в Tkinter?
  • python ImageTk.PhotoImage - segfault
  • Что делает overrideredirect?
  • Почему tkinter отлично работает с многопроцессорной обработкой?
  • Вставка виджета tkinter Treeview
  • Как остановить Tkinter Frame от сжатия до его содержимого?
  • Сделать полноэкранный режим tkinter
  • Проблемы с tk85.dll при отключении приложения, в которое встроен интерпретатор Python
  • Полноэкранное приложение Tkinter
  • Прозрачный холст в tkinter python
  •  
    Interesting Posts for Van-Lav

    Перезагрузка модуля дает функциональность, которая изначально не доступна, импортируя ее. где я могу узнать больше об этом?

    Функция mail.send () в web2py для возвращенного адреса электронной почты или адреса электронной почты, который не существует

    Как получить изображение в python / pygame

    Есть ли эквивалент диапазона Pythons (12) в C #?

    Объединение нескольких задач mapreduce в потоке Hadoop

    «pip» не распознается как внутренняя или внешняя команда

    Краткое описание правил оглавления?

    Сделайте копию в zip-памяти из-за итерирования по каждому файлу ввода

    Python открывает ярлык JAR

    Как надежно угадать кодировку между MacRoman, CP1252, Latin1, UTF-8 и ASCII

    Django Rest: просмотр не хочет импортировать

    Железный питон, красивый суп, приложение win32

    Преобразование YAML в JSON с помощью Python: <block end> ​​найдено

    Каков самый чистый способ добавить каталог сторонних пакетов в начало пути Python?

    Сканирование сканирования со следующей страницы

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