установить заголовок tkinter Optionmenu в строку и StringVar - PullRequest
0 голосов
/ 05 сентября 2018

Итак, у меня есть Optionmenu с названием «options» и некоторыми опциями. Название меняется каждый раз, когда я выбираю что-то в variable1. Как я могу установить его после того, как он изменился, на строку «options» и на значение переменной? Например: «параметры - музыка выключена» Я пробовал это, но это не работает:

variable1 = StringVar() 
variable1.set("something",variable1)

Спасибо.

Редактировать: Вот полная версия моего кода:

            options = Menubutton(frame,textvariable = options3,indicatoron=True,borderwidth=1, relief="raised", width=20)
            options.grid(row=3,column=2)#options2 [0] options3
            main_menu = Menu(options,tearoff=False)
            options.configure(menu=main_menu)
            get_options3= options3.get()
            neededstring = string+str(options3)
            print("needed str", neededstring)
            options3.set('options - ' +options3.get())
            for item in (("Answer with text", "plain text", "only numbers", "only letters"),
             ("Answer with Checkbuttons", "red", "green", "blue"), ("Answer with Radiobuttons", "one option can be chosed")
                         ):
                menu = Menu(main_menu, tearoff=False)
                main_menu.add_cascade(label=item[0], menu=menu)
                for value in item[1:]:
                    menu.add_radiobutton(value=value, label=value, variable=options3)

1 Ответ

0 голосов
/ 10 сентября 2018

Если вы проследите StringVar, который вы даете OptionMenu, вы можете добавить строку в начало всякий раз, когда опция изменяется. Это создает окно с OptionMenu, которое делает это:

import tkinter as tk

root = tk.Tk()

# function to add 'options - ' to the front of the selected option
def change_selected(var1):
    var1.set('options - %s' % var1.get())

# variable
var1 = tk.StringVar(root)
var1.set('1')

# create menu
options = tk.OptionMenu(root, var1, '1', '2', '3')
options.pack()

# trace variable for changes
var1.trace('w', lambda *args: change_selected(var1))

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...