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: 13103
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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
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: 17749
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