单击选项菜单时不会显示第一个选项(Tkinter)

2024-06-25 23:32:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在代码中添加了一个OptionMenu小部件,并分配了一个列表作为它的选项。事情是这样的:

z = StringVar()   
z.set(userList[0])    
usersOption = OptionMenu(frame1, z, *userList)#, command=changeUser)
usersOption.pack(side=RIGHT, padx=3)

现在,我想它会显示上述列表中的所有选项。因此:

^{pr2}$

但实际上它只显示第二个选项,当我选择它时,基本上,没有退路,如果我再次单击这个框,它将一直只显示选项2,即使使用向上和向下键,我也无法更改它。我试图寻找解决方案,但毫无结果,所以我开始认为这是小部件的默认操作方式,但在我阅读的文档中,我没有找到任何可以向我展示如何解决问题的方法。
P、 S:我使用的是Python3.3


Tags: 代码列表部件选项事情sidecommandpack
3条回答

迟答。。在

就用吧

self.option = OptionMenu(PARENT, VALUE TO BE CHANGED, "DEFAULT TEXT", *OPTIONS_ARRAY/LIST)

很适合我。在

不要紧,我去掉了*userList,并使用for循环将这些项作为命令插入。现在一切正常。
我使用的代码:

for user in userList:
    usersOption["menu"].insert("end", "command", label=user, command=_setit(z, user, changeUser))

我也有同样的问题,它让我发疯了,所以我查看了source。我认为问题是第三个构造函数参数是默认值。如果不在*userList之前指定它,那么它看起来会将第一项作为默认值。真正的解决办法是:

z = StringVar()   
z.set(userList[0])    
usersOption = OptionMenu(frame1, z, userList[0] ,*userList)#, command=changeUser)
usersOption.pack(side=RIGHT, padx=3)

相关问题 更多 >