Radiobutton und Variablenübermittlung

Fragen zu Tkinter.
Antworten
niko
User
Beiträge: 24
Registriert: Freitag 23. Januar 2004, 20:53

Sonntag 8. Februar 2004, 17:17

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
Es gibt diejenigen, die angeln, und diejenigen, die nur das Wasser trüben.
Gast

Sonntag 8. Februar 2004, 19:41

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
Benutzeravatar
wuf
User
Beiträge: 1477
Registriert: Sonntag 8. Juni 2003, 09:50

Montag 9. Februar 2004, 01:13

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:
Take it easy Mates!
Antworten