首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tkinter选项菜单-即时更新选项

tkinter选项菜单-即时更新选项
EN

Stack Overflow用户
提问于 2014-09-28 19:55:18
回答 3查看 6.5K关注 0票数 6

我正在使用Tkinter和Python 2.7.6创建一个GUI。

我有一个下拉菜单,用以下代码创建并初始禁用:

代码语言:javascript
复制
    self.dropdown = Tkinter.OptionMenu(self, self.dropdownVar, "Select SED...")
    self.dropdown.grid(column=0,row=1)
    self.dropdown.configure(state="disabled")

在用户选择一个目录之后,我调用了一个函数onEnterDir(),该函数随后将获得该目录中的文件列表。因此,我在一个名为dirFiles的变量中有一个文件列表。

我想要的是,然后更新下拉菜单中的选项与此dirFiles列表中的项目。我该怎么做呢?

我的问题与这里的其他人不同,因为我只想更新self.dropdown显示的项目列表。它不依赖于任何其他小部件。我有一个python列表,上面列出了我想放入的内容。我该怎么做呢?

EN

回答 3

Stack Overflow用户

发布于 2014-09-28 22:01:31

您可以在the answer中使用您在问题中提到的相同技术:

例如:

代码语言:javascript
复制
import os
from functools import partial
from Tkinter import *
from tkFileDialog import askdirectory

def onEnterDir(dropdown, var):
    path = askdirectory()
    if not path:
        return
    filenames = os.listdir(path)
    dropdown.configure(state='normal')  # Enable drop down
    menu = dropdown['menu']

    # Clear the menu.
    menu.delete(0, 'end')
    for name in filenames:
        # Add menu items.
        menu.add_command(label=name, command=lambda name=name: var.set(name))
        # OR menu.add_command(label=name, command=partial(var.set, name))


root = Tk()
dropdownVar = StringVar()
dropdown = OptionMenu(root, dropdownVar, "Select SED...")
dropdown.grid(column=0, row=1)
dropdown.configure(state="disabled")
b = Button(root, text='Change directory',
           command=lambda: onEnterDir(dropdown, dropdownVar))
b.grid(column=1, row=1)
root.mainloop()
票数 4
EN

Stack Overflow用户

发布于 2014-09-28 22:05:37

必须首先将self.dropdown设置为活动状态,然后将其放入选项列表,如下所示:

代码语言:javascript
复制
    self.dropdown.configure(state="active")
    for fi in dirList:
        self.dropdown['menu'].add_command(label=fi, command=Tkinter._setit(self, fi))

命令部分就是让我抓狂的地方。

票数 0
EN

Stack Overflow用户

发布于 2018-12-01 19:43:22

你有OptionMenu.set_menu(*values),它在@falsetru的答案中做了类似的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26084620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档