tkinter -- OptionMenu

发布时间:2018-06-05 21:30:08编辑:Run阅读(4578)

    OptionMenu 为可选菜单,与 Combox 功能类似

    创建 OptionMenu

    代码:

    import tkinter as tk
    
    root = tk.Tk()
    v = tk.StringVar(root)
    v.set('python')
    om = tk.OptionMenu(root, v, 'python', 'php', 'java', 'c', 'javascript')
    om.pack()
    root.mainloop()

    结果:

    444.gif

    显示的文本自动断行,上下行分别使用了左对齐,右对齐和居中对齐

    OptionMenu 的创建需要两个必要的参数,与当前值绑定的变量,通常为一 StringVar 类型;另一个是提供可选的内容列表,由 OptionMenu 的变参数指定




    设置 OptionMenu 的显示值

    当 OptionMenu 与变量绑定后,直接使用变量赋值的方法即可改变当前的值

    代码:

    import tkinter as tk
    
    root = tk.Tk()
    v = tk.StringVar(root)
    v.set('python')
    # 创建一个OptionMenu控件
    om = tk.OptionMenu(root, v, 'python', 'php', 'java', 'c', 'javascript')
    om.pack()
    print(v.get())
    root.mainloop()

    结果:

    blob.png

    运行程序,OptionMenu 默认值为"python",打印出的数值也为"python"



    如果设置的值不包含在当前的列表中,会是什么结果?如下的代码使用"Tkinter"来测试

    代码:

    import tkinter as tk
    
    root = tk.Tk()
    v = tk.StringVar(root)
    v.set('tkinter')
    # 创建一个OptionMenu控件
    om = tk.OptionMenu(root, v, 'python', 'php', 'java', 'c', 'javascript')
    om.pack()
    print(v.get())
    root.mainloop()

    结果:

    blob.png

    程序依旧是默认值改变为 Tkinter,打印结果也变为 Tkinter,但 Tkinter 不会添加到OptionMenu 的列表中,也就是说,当选择其它的选项时,Tkinter 的值会丢失



    打印 OptionMenu 的值

    代码:

    import tkinter as tk
    
    root = tk.Tk()
    v = tk.StringVar(root)
    v.set('tkinter')
    def printoption(event):
        print(v.get())
    
    # 创建一个OptionMenu控件
    om = tk.OptionMenu(root, v, 'python', 'php', 'java', 'c', 'javascript')
    om.bind('<Button-1>', printoption)
    om.pack()
    root.mainloop()

    结果:

    blob.png

    每次点击 OptionMenu 程序打印出上次选中的项值



    使用 list 作为 OptionMenu 的选项

    代码:

    import tkinter as tk
    
    root = tk.Tk()
    v = tk.StringVar(root)
    Lang = ['python', 'php', 'java', 'c', 'javascript']
    v.set('tkinter')
    def printoption(event):
        print(v.get())
    
    
    # 创建一个OptionMenu控件
    om = tk.OptionMenu(root, v, tuple(Lang))
    om.bind('<Button-1>', printoption)
    om.pack()
    root.mainloop()

    结果:

    blob.png

关键字

上一篇: tkinter -- Message

下一篇: tkinter -- Frame