Seite 1 von 1

Radiobutton und Variablenübermittlung

Verfasst: Sonntag 8. Februar 2004, 17:17
von niko
Hi Pythonfangemeinde!
also ich steh vor folgendem problem:
ich möchte irgendeine auswahl haben(in dem fall jetzt radiobuttons) und wenn auf die geklickt wird,dann verändert sich die Hintergrundfarbe.
der code sieht folgendermaßen aus():

Code: Alles auswählen

farbe='gray'
from Tkinter import *
import random
root=Tk()
root['bg']=farbe
cv = Canvas(root,width=350,height=400,bg=farbe)
cv.pack()
liste=[]
whichone = 0
def colorchange(neuefarbe):
    root['bg'] = neuefarbe
MODES = [("Rot", "red"),("Gruen", "green")]
v = StringVar()
v.set("red") # initialize
for t, m in MODES:
    auswahl = Radiobutton(cv,text=t,variable=v,value=m,lambda e,M=m:colorchange(M))
    #auswahl.invoke()
    auswahl.pack(side='left')
root.mainloop()
Jedoch will es nicht so ganz und ich hab auch schon allerlei variationen ausprobiert, doch es tut sich nichts.
Mfg
Niko

Verfasst: Sonntag 8. Februar 2004, 19:41
von Gast
Du solltest Deine Fragestellung etwas genauer definieren - Du möchetst eine Auswahl [zwischen 'rot' && 'grün']? Oder eine Farbumstellung? Im letzteren Fall versuch doch mal:

//after(ms,func[,arg1[,...]])

from Tkinter import *
def newcolor(canvas,farbe):
canvas.configue(bg=farbe)
........... #Deine button oder frame
canvas.after(1000.neuefarbe,canvas,"green") #color change after 1 sec

with best regards
micha

Verfasst: Montag 9. Februar 2004, 01:13
von wuf
Hallo Niko

Hier ein Lösungsansatz für
deine Farbselektion mittels
Tkinter Radiobuttons.

Code: Alles auswählen

from Tkinter import *

def colorchange():
	cv['bg'] = v.get()

def exit():
	root.destroy()

if __name__ == "__main__":
	root = Tk()

	xpos   = 30
	ypos   = 30
	width  = 600
	height = 600
	root.wm_geometry("%dx%d+%d+%d" % (width,height,xpos,ypos))
	root.title('Nikos color game')

	root['bg'] = 'gray'

	liste=[]
	MODES = [("Rot", "red"),
			 ("Gruen", "green"),
			 ("Blue", "blue"),
			 ("Yellow", "yellow"),
			 ("SteelBlue3","steelblue3"),
			 ]

	v = StringVar()
	v.set("gray") # initialize

	cv = Canvas(root,bg=root['bg'])
	cv.pack(fill=BOTH,expand=1)

	for t, m in MODES:
		auswahl = Radiobutton(cv,
							text     = t,
							width    = 15,
							fg       = m,
							anchor   = 'w',
							bg       = root['bg'],
							bd       = 1,
							relief   = 'raised',
							highlightbackground = root['bg'],
							variable = v,
							value    = m,
							command  = colorchange)
		auswahl.pack(side='top')
		liste.append(auswahl)

	exitbutton = Button(cv,
						bd=1,
						text='Verlassen',
						width=15,
						highlightbackground = root['bg'],
						command = exit,
						)
	exitbutton.pack(side='top')

	root.mainloop()
Gruss wuf :wink: