Radiobuttons im tkinter menu vorauswählen

Fragen zu Tkinter.
Antworten
EinSteini
User
Beiträge: 5
Registriert: Sonntag 9. Juni 2019, 14:59

Hallo!
Ich mache gerade ein Spiel, in dem der User durch Auswahl von Radiobuttons im Menu von tkinter das Spielfeld-Design festlegen kann. Wenn ich das Programm starte, ist aber keiner von den Radiobuttons ausgewählt. Kann ich irgendwie einen Radiobutton vorauswählen?

Code: Alles auswählen

menu = Menu(hf)
designmenu = Menu(menu)
menu.add_cascade(label="Design", menu=designmenu)
designmenu.add_radiobutton(label="Normal", command=normaldesign)
designmenu.add_radiobutton(label="Summer", command=summerdesign) 
Benutzeravatar
__blackjack__
User
Beiträge: 14226
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@EinSteini: Du musst bei beiden `value` setzen und die gleiche `variable`, damit Tk weiss, das die beiden zusammengehören, und der Wert der `variable` legt dann auch fest welcher Radiobutton (vor)ausgewählt ist.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
EinSteini
User
Beiträge: 5
Registriert: Sonntag 9. Juni 2019, 14:59

Was soll das für eine Variable sein? Boolean, und dann der voraktivierte auf True und die anderen auf False?
Sirius3
User
Beiträge: 18328
Registriert: Sonntag 21. Oktober 2012, 17:20

Eine Tk-Variable, z.B: StringVar:

Code: Alles auswählen

import tkinter as tk

def main():
    hf = tk.Tk()
    menu = tk.Menu(hf)
    selected_design = tk.StringVar(hf, "Summer")
    designmenu = tk.Menu(menu)
    menu.add_cascade(label="Design", menu=designmenu)
    designmenu.add_radiobutton(label="Normal", variable=selected_design)
    designmenu.add_radiobutton(label="Summer", variable=selected_design)
    hf['menu'] = menu
    hf.mainloop()

if __name__ == '__main__':
    main()
Antworten