使用列表填充tkinter选项菜单

时间:2018-04-04 16:28:48

标签: python tkinter

我有一个列表,我想用它来填充tkinter中的选项菜单。 我已经进行了广泛的搜索,无法找到有效的解决方案...感谢任何帮助!

from tkinter import *
from tkinter.ttk import *
from tkinter import messagebox
import tkinter as tk
from tkinter import ttk


class TestGUI(Frame):

    def __init__(self, root):
        Frame.__init__(self, root)
        self.root = root
        self.pack()
        self.mylist = ['test','test2','test3']
        self.emailDropDown= OptionMenu(root,self.mylist)
        self.emailDropDown.pack()

root = Tk()
gui = TestGUI(root)
root.mainloop()

2 个答案:

答案 0 :(得分:0)

OptionMenu的第一个参数不是父级和选项列表,它们是父级,变量和选项列表。

因此,如果您想按位置而不是按名称传递参数,则需要将选项列表作为第三个传递,而不是第二个。

有关示例,请参阅Tkinter book chapter on OptionMenu

答案 1 :(得分:0)

from tkinter import *
from tkinter.ttk import *
from tkinter import messagebox
import tkinter as ttk
from tkinter import ttk
import tkinter.ttk as ttk


class TestGUI(Frame):

    def __init__(self, root):
        Frame.__init__(self, root)
        self.root = root
        self.pack()

        self.mylist = ['test','test2','test3']
        variable = StringVar()
        variable.set(self.mylist[0]) # default value
        self.w = OptionMenu(*(root, variable) + tuple(self.mylist))
        self.w.pack()



root = Tk()
gui = TestGUI(root)
root.mainloop() 

这样可行,但是,当您选择它时,第一个列表选项会消失。仍在尝试找到对此的答案