Unterschied tk.OptionMenu und ttk.OptionMenu

Fragen zu Tkinter.
Antworten
guenther52
User
Beiträge: 5
Registriert: Sonntag 20. Juni 2021, 18:02

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()
Benutzeravatar
grubenfox
User
Beiträge: 432
Registriert: Freitag 2. Dezember 2022, 15:49

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...
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

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.
guenther52
User
Beiträge: 5
Registriert: Sonntag 20. Juni 2021, 18:02

ist ja eine sonderbare Sache. Vielen Dank für die Hilfe.
Antworten