Я пытаюсь создать выпадающий список для личной программы, который автоматически обновляет отображаемое имя на основе выбранного элемента.Создание выпадающего пункта меню Python
Дело в том, что независимо от того, что выбрано или какое значение по умолчанию должно быть, оно всегда автоматически изменяет выбранное имя на последний параметр, который пользователь может выбрать, и он не изменится, если выбран другой параметр.
import tkinter
from tkinter import *
def changename(name=str):
selectedText.set(name)
mb.grid(row=1,column=1)
def startmainloop(var):
var.mainloop()
root = Tk()
label0=Label(root,text=".....")
label0.grid(row=0,columnspan=2)
selectedText=StringVar()
selectedText.set("Select Race")
mb=Menubutton(root, textvariable=selectedText,relief=GROOVE)
label1=Label(root, text="RACE")
label1.grid(row=1,column=0)
mb.grid()
mb.menu=Menu(mb, tearoff=0)
mb.menu.add_command(label="Argonian", command=changename("Argonian"))
mb.menu.add_command(label="Khajiit", command=changename("Khajiit"))
mb["menu"]=mb.menu
startmainloop(root)
На изображении, которое было бы выше, по умолчанию он должен показывать «Выбрать расу». Выпадающее меню появляется после нажатия на Select Race с двумя параметрами команды «Argonian» и «Khajiit». После нажатия на опцию «Argonian» метка «Выбрать раса» меню должна измениться на «Argonian». Опция «Khajiit», по-видимому, перегружает значение по умолчанию и не будет меняться независимо от пользователя, выбирающего Argonian.
У вас возникли ошибки относительно не b возможно ли назвать «Nonetype»? – TigerhawkT3
нет, если я отформатирую его так, если я поставлю «StringVar()» перед «root = Tk()», тогда да, я получил эту ошибку – AZLord
Вы должны получить такую ошибку из 'command = changename (« Argonian »)) ', когда вы выбираете этот пункт меню, потому что он попытается вызвать' None', который не работает. – TigerhawkT3