单击按钮时更改OptionMenu的选项

cha*_*umQ 10 python tkinter onclick optionmenu python-2.7

假设我有一个选项菜单network_select,其中包含要连接的网络列表.

import Tkinter as tk

choices = ('network one', 'network two', 'network three')
var = tk.StringVar(root)
network_select = tk.OptionMenu(root, var, *choices)
Run Code Online (Sandbox Code Playgroud)

现在,当用户按下刷新按钮时,我想更新用户可以连接到的网络列表.

  • 我不能使用,.config因为我看了看network_select.config()并没有看到一个看起来像我给它的选择的条目.
  • 我不认为这是可以使用tk变量改变的东西,因为没有这样的东西ListVar.

iCo*_*dez 27

我修改了您的脚本以演示如何执行此操作:

import Tkinter as tk

root = tk.Tk()
choices = ('network one', 'network two', 'network three')
var = tk.StringVar(root)

def refresh():
    # Reset var and delete all old options
    var.set('')
    network_select['menu'].delete(0, 'end')

    # Insert list of new options (tk._setit hooks them up to var)
    new_choices = ('one', 'two', 'three')
    for choice in new_choices:
        network_select['menu'].add_command(label=choice, command=tk._setit(var, choice))

network_select = tk.OptionMenu(root, var, *choices)
network_select.grid()

# I made this quick refresh button to demonstrate
tk.Button(root, text='Refresh', command=refresh).grid()

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

单击"刷新"按钮后,将清除network_select中的选项,并插入new_choices中的选项.