bild ersetzt und alles weg

Fragen zu Tkinter.
Antworten
Arminius
User
Beiträge: 11
Registriert: Montag 4. April 2005, 16:27

hallo, ich habe mehrere buttons in einem array. nun starte ich folgende funktion:

Code: Alles auswählen

    def change(self):
        self.photo=PhotoImage(file='brute.gif')
        self.buttons[1][1].config(image=self.photo)
dannach sind alle buttons weg und nur der geändere button erscheint, dass allerdings auch nicht an seiner eigentlichen stelle. weis jemand woran das liegt und wie ich es verhindern kann?
Arminius
User
Beiträge: 11
Registriert: Montag 4. April 2005, 16:27

weis denn keiner wie es sein kann, dass die buttons verschwinden und der eine button nicht an seiner eigentlichen position ist?
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Kannst Du bitte etwas mehr Code zeigen, anhand diesen 3 Zeilen kann man wirklich nichts sagen.

Gruß, mawe
Arminius
User
Beiträge: 11
Registriert: Montag 4. April 2005, 16:27

Code: Alles auswählen

self.buttons[1][1]=Button(frame,border=1,image=self.photo,command=self.change)
self.buttons[1][1].place(x=1,y=1)
wenn ich jetzt auf diesen button klicke, soll er eigentlich sein bild ändern, allerdings verschwinden alle Buttons und nur dieser erscheint mit dem neuem Bild an einer ganz anderen position
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!

Sehr witzig! Statt 3 Zeilen bietest Du jetzt als "mehr" Information 2 Zeilen.
Arminius hat geschrieben: weis denn keiner wie es sein kann, dass die buttons verschwinden und der eine button nicht an seiner eigentlichen position ist?
Nein. Und mit den Informationen die Du lieferst stehen die Chancen schlecht dass Du eine brauchbare Antwort bekommst.
Also zeig doch bitte etwas mehr. Was z.B. interessant wäre, wie werden denn die anderen Buttons (die dann verschwinden) erzeugt. Wenns nicht zu lang ist, poste einfach das ganze Programm. Ansonsten streich alles unnötige und zeig den Rest.

Gruß, mawe
BlackJack

Ich rate trotzdem mal. Soweit ich weiss muss man bei Tkinter selber dafür sorgen, dass immer eine Referenz auf Bilder besteht, die man in die GUI einbaut.

Diese Referenz ist bei Dir `self.photo` und wenn Du in `change` ein anderes Bild an diesen Namen bindest, dann verschwindet das vorherige aus dem Speicher.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi Blackjack!

Da hast Du recht, allerdings verschwinden die Buttons dann nicht, sondern nur die Bilder :wink: (und der mit dem neuen Bild sollte auch da bleiben wo er war).

@Arminius:
Wenn das bei Dir so passiert, versuchs mal so:

Code: Alles auswählen

 def change(self):
        self.new_photo=PhotoImage(file='brute.gif')
        self.buttons[1][1].config(image=self.new_photo) 
Gruß, mawe
Antworten