Не устанавливается значение по умолчанию в окне tkinter
Не удаётся установить значение по умолчанию для Combobox или Spinpox. В главном окне всё работает исправно, но если запускать точно то же, но в отдельном окне, поверх остальных, то значение не указывается, хотя выбрать вариант из выпадающего списка можно.
Упрощённый код:
from tkinter import *
from tkinter import ttk
mainw = Tk()
## ОКНА;
tab_control = ttk.Notebook(mainw)
add_tag = ttk.Frame(tab_control)
tab_control.add(add_tag, text="Add tags")
tab_control.pack(expand=1, fill='both')
default_authors_data = StringVar(value="pixiv")
authors_list_data = ["pixiv", "twitter", "artstation", "devianart", "instagram", "other"]
authors_list = ttk.Combobox(add_tag, values=authors_list_data, textvariable=default_authors_data, state="readonly", width=18)
authors_list.pack()
def description_window():
popup = Toplevel()
popup.title("Menu:")
type_options = ["description", "object", "other", "author", "copyright", "character", "unknown"]
type_selected_value = StringVar(value="description") ## значение по умолчанию;
type_combo = ttk.Combobox(popup, values=type_options, textvariable=type_selected_value, state="readonly", width=20, font=("Arial", 13))
type_combo.pack(side='top', anchor='w', padx=30, pady=10)
descption_window_btn = Button(add_tag, text="Check description", command=description_window, width=16)
descption_window_btn.pack()
mainw.mainloop()
После нажатия кнопки Check description в главном окне, открывается дополнительное окно поверх и там есть выпадающий список, в котором перечислены заданные значения из списка. По умолчанию значение должно выставляться из переменной type_selected_value (description), но вместо этого, никакого значения нет вовсе. Нужно выбирать вручную.
А главном окне точно такой же выпадающий список, только с другими значениями, работает исправно и значение по умолчанию выставляется.
Есть ли способ исправить это или какова причина проблемы?
Ответы (1 шт):
Можно банально его установить через set из выбранного элемента в основном окне.
def description_window():
popup = Toplevel()
popup.title("Menu:")
type_options = ["description", "object", "other", "author", "copyright", "character", "unknown"]
default_value = authors_list.get() # Через get возвращаем значение из основного окна
type_combo = ttk.Combobox(popup, values=type_options, state="readonly", width=20, font=("Arial", 13))
type_combo.set(default_value) # В наглую его устанавливаем
type_combo.pack(side='top', anchor='w', padx=30, pady=10)
На Pydroid 3 к слову type_selected_value = StringVar(value="description") работает и устанавливает значение по умолчанию. На Win10 параметр textvariable у меня не работает для нового окна, получаю пустой список - нужно выбирать вручную.
Но через set всё работает исправно - type_combo.set("description") значение устанавливается.