Tkinter का उपयोग कर स्टेटमेंट के लिए लेबल में चित्र प्रदर्शित करना, क्या यह किया जा सकता है? - अजगर, छवि, फॉर-लूप, टिंकर, लेबल

मैं चित्रों का यादृच्छिक गुच्छा पाने की कोशिश कर रहा हूंतरफ से प्रिंट पक्ष; समस्या यह है कि यदि मैं निम्नलिखित कोड चलाता हूं तो ऐसा होता है कि यह रिक्त खाली लेबल का समूह बनाता है। अगर मैं "text = pic" को "text =" से बदलता हूं जो कुछ भी ठीक काम करता है (इस प्रकार यह साबित करता है कि यह वास्तव में लेबल बनाता है)। लेबल और छवि को कहीं भी ठीक से काम करता है (यह साबित करता है कि यह छवियां नहीं हैं), भले ही मैं "तस्वीर = फोटो इमेज (फ़ाइल = डब्ल्यू [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()

काम करने के लिए इसे कैसे प्राप्त करें इस पर कोई सलाह बहुत सराहना की जाएगी।

उत्तर:

उत्तर № 1 के लिए 4

यह टिंकर - आप के साथ एक प्रसिद्ध मुद्दा हैसभी फोटोमैजों के लिए अपना खुद का संदर्भ रखना चाहिए, अन्यथा अजगर उन्हें कचरा इकट्ठा करेगा - यह कि आपकी छवियों के साथ क्या हो रहा है। उन्हें लेबल के लिए छवि के रूप में सेट करना छवि वस्तुओं के संदर्भ संदर्भ में नहीं जोड़ता है।

उपाय:

इस समस्या को हल करने के लिए, आपको लगातार एक आवश्यकता होगीआपके द्वारा बनाई गई सभी छवि वस्तुओं का संदर्भ। आदर्श रूप से, यह कक्षा नामस्थान में डेटा संरचना होगी, लेकिन चूंकि आप किसी भी कक्षा का उपयोग नहीं कर रहे हैं, इसलिए मॉड्यूल-स्तरीय सूची को करना होगा:

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

संबंधित सवाल
सबसे लोकप्रिय