Seite 1 von 1

kontrollvariable im menu verwenden klappt nicht so richtig

Verfasst: Samstag 8. November 2008, 23:51
von Monty Python
hallo!

ich möchte sowas wie ein 'zeichenprogramm' machen.
man soll also auch die strichdicke und -farbe einstellen können. dazu habe ich mir gedacht, ich mache ein menu und dort ein paar radiobuttons, die für die strichdicke 'zuständig' sind. alles schön und gut, ich kann da ja auch was auswählen, aber wenn ich dann zeichnen will, kommt ne fehlermeldung (TclError: bad screen distance "PY_VAR0")

hier mal das wichtigste:

Code: Alles auswählen

self.polygon = self.leinwand.create_polygon(self.punkte,fill="",outline="green", width=self.strichdicke)
...
self.strichdicke = IntVar()
self.strichdicke.set(1)
...
self.fenster.menuleiste.menu2.sd.add_radiobutton(label="1", variable=self.strichdicke, value=1)
self.fenster.menuleiste.menu2.sd.add_radiobutton(label="2", variable=self.strichdicke, value=2)
nicht meckern, falls ich irgenwas grundsätzliches falsch gemacht habe, bin noch ein ziemlicher anfänger beim programmieren ...
schonmal thx im voraus!

Verfasst: Sonntag 9. November 2008, 01:45
von abgdf
Yo, hab' ich gerade erklärt:

http://www.python-forum.de/topic-16599.html

(am Ende)

Gruß

Verfasst: Sonntag 9. November 2008, 16:46
von Monty Python
also statt

Code: Alles auswählen

self.strichdicke = IntVar()
einfach

Code: Alles auswählen

self.strichdicke = Tkinter.Variable()
wenn ich das jetzt richtig verstanden habe?

Verfasst: Sonntag 9. November 2008, 17:35
von BlackJack
Nein hast Du nicht richtig verstanden. Nächster Versuch. :P

Verfasst: Sonntag 9. November 2008, 19:12
von Monty Python
ah, jetzt hab ichs aber: ich muss statt

Code: Alles auswählen

self.polygon = self.leinwand.create_polygon(self.punkte,fill="",outline="green", width=self.strichdicke)
schreiben:

Code: Alles auswählen

x = self.strichdicke.get()
self.polygon = self.leinwand.create_polygon(self.punkte,fill="",outline="green", width=x)

Verfasst: Montag 10. November 2008, 20:42
von Monty Python
OK, das war richtig, man kann also eine kontrollvariable nicht ohne dieses 'kontrollvariable.get()' verwenden
dann wäre ja alles geklärt, danke für die hilfe ;)