如何根据下拉菜单中的选项动态填充tkinter中的选项小部件?

Gia*_*nou 2 python tkinter

我的问题如下:我有几个文件,我已经创建了一个带有名称的下拉菜单,接下来我需要的是一个选项菜单,只要选择文件名以显示特定文件中的某些数据,就可以更改选项.要清楚,我的问题只是关于如何在选择下拉选项时更改选项菜单.感谢任何帮助.

Bry*_*ley 9

OptionMenu小部件只不过是一个便利类,可以创建与菜单相关联的菜单按钮.您可以通过该"menu"属性获取此菜单.唯一的技巧是知道菜单项应该做什么,这只不过是设置相关变量的值.

这是一个例子:

import Tkinter as tk

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.om_variable = tk.StringVar(self)

        b1 = tk.Button(self, text="Colors", width=8, command=self.use_colors)
        b2 = tk.Button(self, text="Sizes", width=8, command=self.use_sizes)

        self.om = tk.OptionMenu(self, self.om_variable, ())
        self.om.configure(width=20)
        self.use_colors()

        b1.pack(side="left")
        b2.pack(side="left")
        self.om.pack(side="left", fill="x", expand=True)


    def _reset_option_menu(self, options, index=None):
        '''reset the values in the option menu

        if index is given, set the value of the menu to
        the option at the given index
        '''
        menu = self.om["menu"]
        menu.delete(0, "end")
        for string in options:
            menu.add_command(label=string, 
                             command=lambda value=string:
                                  self.om_variable.set(value))
        if index is not None:
            self.om_variable.set(options[index])

    def use_colors(self):
        '''Switch the option menu to display colors'''
        self._reset_option_menu(["red","orange","green","blue"], 0)

    def use_sizes(self):
        '''Switch the option menu to display sizes'''
        self._reset_option_menu(["x-small", "small", "medium", "large"], 0)

if __name__ == "__main__":
    app = SampleApp()
    app.mainloop()
Run Code Online (Sandbox Code Playgroud)

  • @ user2962794:不,那不是我说的.没有要求删除那里的项目.它的核心只是一个菜单,您可以完全访问所有菜单方法.您可以插入新项目,删除或修改现有项目. (2认同)