Bild wird nur 1mal angezeigt

Fragen zu Tkinter.
Antworten
abrandl
User
Beiträge: 5
Registriert: Sonntag 13. August 2006, 09:47

Hi Leute,

Ich habe eine Klasse NewPic definiert die Bilder in mein Fenster setzt.
Beim ersten Mal geht's auch noch gut, und das Bild wird angezeigt. Drück ich jedoch den Button nochmal, in der Hoffnung das er das Bild dann 2 mal anzeigt, ergibt sich das Problem:
Er zeigt NUR noch das zweite Bild an...

Hier der Code:

Code: Alles auswählen

from Tkinter import*

class GuiTool:
    def __init__(self, parent):
        self.myparent = parent
        self.frame1 = Frame(self.myparent)
        self.frame1.pack()

        self.b_newpic = Button(self.frame1, text = 'newpic', command = self.neupic)
        self.b_newpic.pack()

    def neupic(self):
        self.Pic = NewPic(self.frame1)
        
class NewPic:
    def __init__(self, parent):
        
        self.foto = PhotoImage(file='Bild.gif')
        
        self.picframe = Frame(parent, relief = 'sunken', border = 5)
        self.picframe.pack()
               
        self.pic = Canvas(self.picframe)
        
        self.pic.pack()
        self.pic.create_image(0,0,image = self.foto, anchor = 'nw')

root = Tk()
root.title('GuiTool')
GuiToolObjekt = GuiTool(root)
root.mainloop()
Vielleicht ist es auch nur ein ganz dummer Fehler. Ich bin euch jedenfalls um jeden Ratschlag dankbar!
lg abrandl
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Du speicherst NewPic immer in derselben Variablen. Probier mal folgendes:

Code: Alles auswählen

class GuiTool: 
    def __init__(self, parent):
        self.Pic = []
        self.myparent = parent 
        self.frame1 = Frame(self.myparent) 
        self.frame1.pack() 

        self.b_newpic = Button(self.frame1, text = 'newpic', command = self.neupic) 
        self.b_newpic.pack() 

    def neupic(self): 
        self.Pic.append(NewPic(self.frame1))
MfG
HWK
abrandl
User
Beiträge: 5
Registriert: Sonntag 13. August 2006, 09:47

Ok, ja so funktionierts!
Herzlichen Dank!

lg abrandl
Antworten