Toon posts:

[Python]Tkinter en plaatjes verwisselen

Pagina: 1
Acties:
  • 292 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb de volgende code die met een druk op de knop het ene plaatje vervangt door het tweede plaatje, bij het uitvoeren geeft het geen foutmelding maar 10.gif verdwijnt en 9.gif wordt niet getoond. weet iemand waarom dit is of wat ik fout doe?
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from Tkinter import *

class GUI:
    def __init__(self):
        self.root = root = Tk()
        picture = PhotoImage(file="img\\10.gif")
        self.progress = Label(root,image=picture)
        self.progress.grid()
        Button(root,command=self.ChangeImage,text="Change").grid()
        self.root.mainloop()
        
    def ChangeImage(self):
        self.progress.grid_remove()
        picture = PhotoImage(file="img\\9.gif")
        self.progress = Label(self.root,image=picture)
        self.progress.grid()
    

GUI()

Dit is een deel van de GUI die ik heb geschreven voor galgje en er moet tussen 10 plaatjes gewisseld worden waardoor aparte variabelen voor ieder plaatje niet echt een optie zijn.

[ Voor 7% gewijzigd door Verwijderd op 26-02-2005 14:41 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 13-05 15:57

Robtimus

me Robtimus no like you

Ik heb zelf eens geexperimenteerd met Tkinter, en het dynamisch toevoegen van controls ging bij mij niet; ik heb toen ook al snel voor PyGTK gekozen omdat die veel krachtiger (en mooier, maar dat is persoonlijk) is.

Kun je niet de label zelf intakt laten, maar alleen een andere image zetten?
Dus iets als
Python:
1
2
3
4
5
6
    def ChangeImage(self):
        self.progress.grid_remove()
        picture = PhotoImage(file="img\\9.gif")
        # pseudo code
        self.progress.setImage(picture)
        self.progress.grid()

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
Dat werkt helaas niet, ik kan de configuratie van het Label niet meer aanpassen :(
Helaas werkt het ook niet als ik een tweede variabele aanmaak en die op dezelfde plek als het oude Label neerzet:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from Tkinter import *

class GUI:
    def __init__(self):
        self.root = root = Tk()
        picture = PhotoImage(file="img\\10.gif")
        self.progress = Label(root,image=picture)
        self.progress.grid(row=0,column=0)
        Button(root,command=self.ChangeImage,text="Change").grid(row=1,column=0)
        self.root.mainloop()
        
    def ChangeImage(self):
        self.progress.grid_remove()
        picture = PhotoImage(file="img\\9.gif")
        self.progress2 = Label(self.root,image=picture)
        self.progress2.grid(row=0,column=0)
    

GUI()


Werkt PyGTK ook op windows of is het linux/unix specifiek?

edit:

Blijkbaar weigerd TKinter gewoon om plaatjes te tekenen wanneer het programma gestart is. onderstaande code geeft nl ook geen plaatje

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from Tkinter import *

class GUI:
    def __init__(self):
        self.root = root = Tk()
        Button(root,command=self.ChangeImage,text="Change").grid(row=1,column=0)
        self.root.mainloop()
        
    def ChangeImage(self):
        picture = PhotoImage(file="img\\10.gif")
        self.progress = Label(self.root,image=picture)
        self.progress.grid(row=2,column=0)
    

GUI()

[ Voor 110% gewijzigd door Verwijderd op 26-02-2005 16:03 ]


Verwijderd

Topicstarter
Eureka, na veel gezoek en gegoogle ben ik op http://tkinter.unpythonic.net/wiki/Images de oplossing tegengekomen.
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from Tkinter import *

class GUI:
    def __init__(self):
        self.root = root = Tk()
        picture = PhotoImage(file="img\\10.gif")
        self.progress = Label(root,image=picture)
        self.progress.grid(row=0,column=0)
        Button(root,command=self.ChangeImage,text="Change").grid(row=1,column=0)
        self.root.mainloop()
        
    def ChangeImage(self):
        self.progress.grid_remove()
        #Oplossing: self.picture ipv picture D'oH!
        self.picture2 = PhotoImage(file="img\\9.gif")
        self.progress2 = Label(self.root,image=self.picture2)
        self.progress2.grid(row=0,column=0)
    
GUI()

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 13-05 15:57

Robtimus

me Robtimus no like you

Verwijderd schreef op zaterdag 26 februari 2005 @ 15:02:
Werkt PyGTK ook op windows of is het linux/unix specifiek?
Zowel PyGTK als GTK (required) zijn er voor windows, ik heb het hier zelf ook aan de praat gekregen.

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
Ok bedankt, ik zal het eens gaan bekijken om de gui van mijn nieuwe applicatie te maken (als ik het aan de praat krijg ;))
Pagina: 1