Seite 1 von 1

Unterschied tk.OptionMenu und ttk.OptionMenu

Verfasst: Samstag 12. August 2023, 10:09
von guenther52
habe kürzlich festgestellt, dass das tk.OptionMenu auf meinem neuen Smartphone nicht mehr richtig funktioniert. Habe dann mal probeweise tk.OptionMenu in ttk.OptionMenu geändert. Dabei fiel mir etwas komisches auf. In dem dropdown-Menü von "ttk" fehlt der erste Eintrag. Habe ein kleines Testprogramm angehängt.
Wie kann das passieren?

import tkinter as tk
import tkinter.font as tkFont
from tkinter import ttk # für Version 2
root = tk.Tk()
root.geometry('300x200')
font_arial = tkFont.Font(family='Arial', size=20)
von_stunden1=[6,7,8,9,10,11,12,13,14]
von_stunden2=[6,7,8,9,10,11,12,13,14]
von_stunde_ausgewaehlt1 = tk.StringVar(root, value=von_stunden1[0])
von_stunde_ausgewaehlt2 = tk.StringVar(root, value=von_stunden2[0])
#Version 1: hier werden im dropdown die Zahlen "6"-14 angezeigt
auswahl_von_stunden1 = tk.OptionMenu(root, von_stunde_ausgewaehlt1, *von_stunden1)
auswahl_von_stunden1["menu"].config(font=font_arial)
#Version 2: hier werden im dropdown die Zahlen "7"-14 angezeigt und nach Auswahl die ausgewählte Zahl markiert
auswahl_von_stunden2 = ttk.OptionMenu(root, von_stunde_ausgewaehlt2, *von_stunden2)
auswahl_von_stunden2["menu"].config(font=font_arial)
auswahl_von_stunden1.grid(row=0, column=0, sticky='nsew')
auswahl_von_stunden2.grid(row=0, column=1, sticky='nsew')
root.mainloop()

Re: Unterschied tk.OptionMenu und ttk.OptionMenu

Verfasst: Samstag 12. August 2023, 11:11
von grubenfox
ich habe zwar keine Antwort auf die Frage, aber es war offenbar auch schon 2019 so:
https://pythonprogramming.altervista.or ... nu-widget/

oben wird das "Choose" aus dem Aufruf von OptionMenu mit angezeigt, im unteren Beispiel mit ttk fehlt es...

Re: Unterschied tk.OptionMenu und ttk.OptionMenu

Verfasst: Samstag 12. August 2023, 11:43
von sparrow
Es hilft -wie so oft - ein Blick in den Quellcode.

ttk.OptionMenu.
"default" ist der initial gewählte Wert, der wird aber nicht in die Liste aufgenommen.

tk.OptionMenu.
"value" ist der initial gewählte wert, der wird explizit in die Liste aufgenommen.

Zumindest, soweit ich das beim schnellen Überfliegen gesehen habe.

Re: Unterschied tk.OptionMenu und ttk.OptionMenu

Verfasst: Samstag 12. August 2023, 18:24
von guenther52
ist ja eine sonderbare Sache. Vielen Dank für die Hilfe.