Funktion aufrufen --> Anfängerproblem

Fragen zu Tkinter.
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Funktion aufrufen --> Anfängerproblem

Beitragvon gorba » Montag 21. August 2006, 15:13

Hallo, ich habe folgendes (evt. sehr simples) Problem:

Code: Alles auswählen

def RecvData():
   XXX

class GUI(Frame):
   def __init__(self, parent, master=None):
      Frame.__init__(self, master)
      self.grid()
      Button(root,text="Quit",command=self.quit).pack()
      Button(root,text="Bild",command=self.send_em).pack()

   def show_n(self):
      im = Image.open('test123.jpg')
      im.thumbnail((280, 300), Image.ANTIALIAS)
      self.photo = ImageTk.PhotoImage(im)  # <--
      Label(root, image=self.photo).pack()  # <--


Wie kann ich in der Funktion RecvData mein show_n() aufrufen um ein empfangenes Bild anzuzeigen?
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Beitragvon Python 47 » Montag 21. August 2006, 15:40

Ähm so wie du ganz normal eine Klasse aufrufen würdest und dann die Funktion der Klasse...
mfg

Thomas :-)
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Montag 21. August 2006, 16:54

Hoi gorba,

wüßte nicht wie da irgendetwas funktionieren sollte: Du willst root in __init__ verwendet, aber das ist gar nicht deklariert.
RecvData akzeptiert keine Parameter, aber Deine GUI-Klasse erwartet bei der Erstellung von Objekten ein parent. Das kannst Du natürlich in der RecvData -Funktion erstellen, aber irgendetwas sagt mir, daß Du das nicht tun wirst ;-). Also wenn RecvData eine GUI-Instanz erhält, dann kann sie natürlich GUI-Instanz.show_n() aufrufen.

Ansonsten Poste mal etwas mehr Code, plus Beschreibung - vielleicht kann man Dir ja helfen, wenn Du sagst, was Du eigentlich machen möchtest.

Gruß,
Christian
BlackJack

Re: Funktion aufrufen --> Anfängerproblem

Beitragvon BlackJack » Montag 21. August 2006, 16:57

gorba hat geschrieben:Wie kann ich in der Funktion RecvData mein show_n() aufrufen um ein empfangenes Bild anzuzeigen?


Das GUI Objekt als Argument übergeben und dann ganz einfach die Methode aufrufen.

Code: Alles auswählen

def recieve_data(gui):
    # ...
    gui.show_n()
    # ...
gorba
User
Beiträge: 100
Registriert: Freitag 28. Juli 2006, 14:58

Beitragvon gorba » Dienstag 22. August 2006, 07:46

=) Das Problem war der self parameter der mich verwirrt hat. Ich arbeite das erste mal mit klassen etc. (kommer aus der ansi-c Welt.. ) Neu im code:

Code: Alles auswählen

   if(INI == False):
      conf = read_config()
      MASTER = open_serial_device(conf)
   root=Tk()
   root.title("Thumbnail")
   my_class = MyClass(root)
   root.mainloop()


Und mit my_class.show_n() anspechen. Das Funktioniert auf jeden Fall mal. Ob das ganze sauber ist, kann ich noch nicht beurteilen =)

greez
Benutzeravatar
Michael Schneider
User
Beiträge: 566
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Re: Funktion aufrufen --> Anfängerproblem

Beitragvon Michael Schneider » Dienstag 22. August 2006, 11:11

Salve!

gorba hat geschrieben:

Code: Alles auswählen

def RecvData():
   XXX

class GUI(Frame):
   def __init__(self, parent, master=None):
      Frame.__init__(self, master)
      self.grid()
      Button(root,text="Quit",command=self.quit).pack()
      Button(root,text="Bild",command=self.send_em).pack()

   def show_n(self):
      im = Image.open('test123.jpg')
      im.thumbnail((280, 300), Image.ANTIALIAS)
      self.photo = ImageTk.PhotoImage(im)  # <--
      Label(root, image=self.photo).pack()  # <--


Ich sehe das nicht zum ersten mal und frage mich nicht zum ersten mal: WARUM werden in Zeile 6 die Parameter "parent" und "master" übergeben (von dem später verwendeten root mal ganz zu schweigen :P).
Wo wird das Argument "parent" denn verwendet? Wenn man

Code: Alles auswählen

gui = GUI(tkRoot)

aufruft, wird das Elternwidget an eben dieses parent übergeben. Werden Objekte vielleicht mit

Code: Alles auswählen

gui = GUI(tkRoot, master = tkRoot)

generiert? Wer kann, der kläre mich bitte auf.

Vielen Dank,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder