如何使用列表中的项目填充Tkinter选项菜单

12

我想在Tkinter中用来自不同列表的项目填充选项菜单,该怎么做? 在下面的代码中,它将整个列表视为菜单中的一个项目。 我尝试使用for语句循环遍历列表,但只给了我几次值'a'。

from Tkinter import *

def print_it(event):
  print var.get()

root = Tk()
var = StringVar()
var.set("a")
lst = ["a,b,c,d,e,f"]
OptionMenu(root, var, lst, command=print_it).pack()
root.mainloop()

我想将变量传递给这个函数,但在第二行代码中遇到了语法错误:

def set_wkspc(event):
  x = var.get()
  if x = "Done":
      break
  else:
      arcpy.env.workspace = x
  print x
2个回答

20

lst 在你的代码中是一个只含有一个字符串的列表。

使用一个包含多个菜单名称的列表,并按如下方式指定它们:

....
lst = ["a","b","c","d","e","f"]
OptionMenu(root, var, *lst, command=print_it).pack()
....

我的下一个问题是,是否有一种方法可以选择多个选项?然后我将用它们填充一个新列表以执行操作?此外,用户是否也可以输入选项,而不是使用下拉列表? - kflaw
@kflaw,OptionMenu 只允许选择一个项目。您可能想要使用 Listbox。 - falsetru
谢谢,我会看一下。我正在修改一个函数,想要从选项菜单传递变量,但是它不喜欢函数中第二行的语法,我不确定该如何修复?我已经在上面发布了。 - kflaw
请使用==代替=。对于其他问题,请发布单独的问题。 - falsetru

1

在您的代码中,第二行使用了=,请改用==,并且在if语句中不要使用break关键字,在循环外部使用pass代替。

if x == "Done":
    pass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接