首页 > 解决方案 > 使用与所有其他命令相同的命令向选项菜单添加选项

问题描述

嗨,我试图根据用户想要的选项数量向选项菜单添加选项,我没有包括用户输入部分,因为它在解决问题时不是必需的。我希望选项菜单中的所有选项都能调用课程optionshow,但由于某种原因我无法让它工作,请帮忙。这是代码,感谢您提前提供任何帮助。

import tkinter as tk
root = tk.Tk()
root.geometry('1000x600')

class optionshow:
    def __init__(self,p):
        self.p = p.get()
        print(self.p)

option = tk.StringVar()
option.set('Select')
optionmenu = tk.OptionMenu(root, option, 'Select', command=lambda: optionshow(option))
optionmenu.place(x=350, y=20)

choices = ('12345')
for choice in choices:
    optionmenu['menu'].add_command(label=choice, command=tk._setit(option, choice))

root.mainloop()

标签: pythontkinteroptionmenutkinter.optionmenu

解决方案


您仅为“条目”选项(而不是正确)实例化该类。为什么不采取不同的方法并在创建菜单时一次添加所有选项:

import tkinter as tk
root = tk.Tk()
root.geometry('1000x600')

class optionshow():
    def __init__(self,p):
        self.p = p.get()
        print(self.p)

option = tk.StringVar(root)
option.set('Select')
choices = ('12345')
optionmenu = tk.OptionMenu(root, option, 'Select', *choices, command=lambda x: optionshow(option))
optionmenu.place(x=350, y=20)

root.mainloop()

请注意部分中的必要更正command=lambda


推荐阅读