Ich habe 5 Radiobuttons, die an dergleichen Variablen (tkinter.IntVar) hängen. Die Werte der einzelnen Items sind nicht alle unterschiedlich - so haben zwei Items den Wert 1, ein Item den Wert 2 und die letzten beiden Items den Wert 3. Wenn ich nun den ersten Radiobutton markiere wird automatisch auch der zweite Button markiert, ebenso bei den beiden letzten Radiobuttons - das ist aber nicht das erwünschte Verhalten. Markiert werden soll jeweils nur ein Button - unabhängig vom jeweiligen Wert.
Hat jemenad einen Tipp, wie ich das ändern kann?
Radiobuttons mit gleichen Werten
Ich musste die bei mir mit einem String-Wert vorbelegen, den Tipp dafür hatte ich auch nur gefunden. Anschließend lasse ich die dann durch eine Schleife setzen, wo jeder Button aus einem Dictionary seinen eigenen Wert für value = wert erhält.
Code: Alles auswählen
self.sortierung = StringVar(value="1")
@Melewo: Das hat irgendwie nicht wirklich etwas mit der Frage zu tun. Und die '1' ist schräg, verwirrend, und unnötig.
Ich denke, ich hatte es von hier und so sehr weit ist das von der Fragestellung nicht entfernt.
https://stackoverflow.com/questions/406 ... -but-not-i
https://stackoverflow.com/questions/406 ... -but-not-i
@Melewo: Naja, irgendwie schon. Das ist ein Problem mit `StringVar()`, die hat lernePython aber gar nicht. Wobei das wohl auch ein Bug in `tkinter` oder `Tk` ist, denn das Problem mit `StringVar()` kann laut Internet auch nicht jeder nachvollziehen. Die '1' bleibt auch immer noch erklärungswürdig. Und es löst das Problem von lernePython nicht.
Gut, hast Recht, bei mir war es nur mit StringVar und mit IntVar hatte ich noch keine Probleme. Wenn lernePython nun Radiobuttons mit gleichen int-Werten hat, dann würde mir der Gedanke kommen, diese an eindeutige Namen zu binden. Entweder über ein Dictionary "Einmaliger Name" : "Wert" und nur die Schlüssel für IntVar oder StringVar zu benutzen, die zugehörigen Werte können sich ja eher gleichen. Oder ich würde etwas benutzen wie 1a, 1b und das dann wieder einkürzen und in int wandeln. Oder eine Reihe von 1 bis 9 und eine zweite Reihe von 10 bis 90.
-
- User
- Beiträge: 18
- Registriert: Freitag 3. Februar 2017, 20:01
... so hatte ich es auch umgesetzt - fand es aber ziemlich hässlich, da ich aus den urspr. gesetzten intVAR jetzt stringVAR gemacht habe und in einer Prüfung die jeweiligen stringVar ("A1", "B1", "C1"....) die den Wert 1 repräsentieren, in ein int umwandeln muss, da ich mit den Values rechnen möchte.Sirius3 hat geschrieben:@lernePython: gib den Radio-Buttons unterschiedliche Werte. Dann mußt Du an anderer Stelle die Logik Deines Programms anpassen.
Die Idee mit dem Dict werde ich mir nochmal ansehen.
Vielen Dank für Eure Antworten