Seite 1 von 1
Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 00:34
von mirfaelltnixein
Hallo alle zusammen.
Ich bin relativ neu bei Python.
Ich arbeite grade an einem kleinen Projekt und da lief mir folgendes Problem über den Weg:
Ich möchte wenn ich auf ein Label klicke, dass ein Funktion ausgeführt wird.
soweit so gut:
Code: Alles auswählen
f1=Label(c,font=(('calibri'),40,'bold'),text=' o ',fg='red')
f1.place(relx=0.05,rely=0.39,anchor=N)
f1.bind( '<Button-1>' ,x)
jetzt möchte aber Variablen übergeben. Ich weiß, dass man dies bei Buttons mit der lambda Funktion macht.
Ich wollte das auch bei meinem Label ausprobieren aber da dort command nicht funktioniert(Fehlermeldung-ich habs ausprobiert) weiß ich nicht wie ich das machen soll.
Ich wäre sehr dankbar wenn mir jemand helfen könnte.
Liebe Grüße
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 06:30
von BlackJack
@mirfaelltnixein: Da wo Du `x` stehen hast, muss eine Funktion stehen, die dann aufgerufen wird. Wo genau ist das Problem?
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 15:13
von mirfaelltnixein
Vereinfacht sieht das so aus :
Code: Alles auswählen
from Tkinter import *
y=0
def x(event,y):
print y
root = Tk ( )
c=Canvas(root,width=500,height=500)
c.pack()
f1=Label(c,font=(('calibri'),40,'bold'),text=' o ',fg='red')
f1.place(relx=0.05,rely=0.39,anchor=N)
f1.bind( '<Button-1>',x(3))
mainloop ( )
Das funktioniert allerdings nicht weil ich jetzt ja nur ein Argument geben aber 2 verlangt sind. Aber ich brauche ja das event.
Wie mache ich das dann mit der Variablenübergabe?
vielen Dank für Hilfe
Libe Grüße
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 15:22
von Xynon1
Das ist doch genau das gleiche wie bei "command", du musst eine Funktion übergeben und nicht den Rückgabewert dieser.
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 15:23
von BlackJack
@mirfaelltnixein: Das da macht sowie nicht das was Du willst. Du rufst `x()` ja auf und das *Ergebnis* davon würde an `bind()` übergeben werden, wenn das mit der Parameteranzahl nicht wäre. Du musst da eine Funktion angeben die ein Argument erwartet. Und *die* Funktion könnte dann `x()` aufrufen. Wenn Du dafür keine benannte Funktion mit ``def`` erstellen willst, kannst Du auch eine ``lambda``-Funktion schreiben.
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 15:23
von problembär
Ganz gruselig, was Du da machst: Kannst Du nicht lieber einen Button nehmen? Und mach' anstatt des Sternchenimports lieber
Ansonsten: Statt
müßte es dann
heißen.
Gruß
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 16:53
von mirfaelltnixein
Vielen Dank.
Die Lösung von Problembär war die, die blackjack vorgeschlagen hatte, richtig?
Jetzt klappt es . Ich wusste einfach nicht wie ich das jetzt genau mit der lambda Funktion mache.
Dankeschön
import Tkinter as tk
funktioniert bei mir nicht
was muss ich da noch beachten?
es wir folgendes gesagt(Fehlermeldung):
Code: Alles auswählen
Traceback (most recent call last):
File "/Users/justus/Documents/Python/Mensch ärgere dich nicht/button/test2.py", line 5, in <module>
root = tk ( )
TypeError: 'module' object is not callable
Aber trotzdem schonmal Danke für die Hilfe

Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 17:05
von EyDu
mirfaelltnixein hat geschrieben:import Tkinter as tk
funktioniert bei mir nicht
was muss ich da noch beachten?
es wir folgendes gesagt(Fehlermeldung):
Code: Alles auswählen
Traceback (most recent call last):
File "/Users/justus/Documents/Python/Mensch ärgere dich nicht/button/test2.py", line 5, in <module>
root = tk ( )
TypeError: 'module' object is not callable
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 17:17
von mirfaelltnixein
Dankeschön,
aber wieso geht dann canvas nicht mehr?
was muss ich da beachten?
Re: Variablen übergeben bei Labels
Verfasst: Freitag 29. April 2011, 17:22
von EyDu
Re: Variablen übergeben bei Labels
Verfasst: Samstag 30. April 2011, 14:06
von problembär
Der Grund, warum man den Sternchenimport lieber vemeiden sollte, ist, daß man sonst Funktionen und Objekte im Code stehen hat, von denen man nicht mehr weiß, wo sie herkamen:
Keine Ahnung, wo das "Canvas" nochmal herkam ...
Ach so, das kam aus dem tk (= Tkinter)-Modul.
Logisch, oder?