Seite 1 von 1
Funktion aufrufen --> Anfängerproblem
Verfasst: Montag 21. August 2006, 15:13
von gorba
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?
Verfasst: Montag 21. August 2006, 15:40
von Python 47
Ähm so wie du ganz normal eine Klasse aufrufen würdest und dann die Funktion der Klasse...
Verfasst: Montag 21. August 2006, 16:54
von CM
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
Re: Funktion aufrufen --> Anfängerproblem
Verfasst: Montag 21. August 2006, 16:57
von BlackJack
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.
Verfasst: Dienstag 22. August 2006, 07:46
von gorba
=) 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
Re: Funktion aufrufen --> Anfängerproblem
Verfasst: Dienstag 22. August 2006, 11:11
von Michael Schneider
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
).
Wo wird das Argument "parent" denn verwendet? Wenn man
aufruft, wird das Elternwidget an eben dieses parent übergeben. Werden Objekte vielleicht mit
generiert? Wer kann, der kläre mich bitte auf.
Vielen Dank,
der Michel