繁体   English   中英

选择选项菜单后保存 output (python - Tkinter)

[英]Saving output after choosing option menu (python - Tkinter)

在用户点击 OK 按钮并且 window 在 Tkinter 中关闭之后,我试图保存用户的选择 [Red, Green-red, Green-blue, blue] ......到目前为止,我已经使用了一些东西我在网上找到了,但我无法推断出一种“简单”的方法?

def select_channel():
     OPTIONS = [
       "Red",
       "Green-red",
       "Green-blue",
       "Blue"
    ]

    master = tk.Tk()

    var = tk.StringVar(master)
    var.set(OPTIONS)  # initial value

    option = tk.OptionMenu(master, var, *OPTIONS)
    option.pack()


    def ok():
       print("value is", var.get())
       channel = var.get()
       master.destroy()

    button = tk.Button(master, text="OK", command=ok)
    button.pack()
    tk.mainloop()

有什么想法吗? 我将它保存在频道下,但它在 function 之外不可用。

使用global为全局变量赋值

def ok():
    global channel

    print("value is", var.get())
    channel = var.get()
    master.destroy()

BTW:使用return channel没有意义,因为 function 是通过按钮执行的,它不能返回值并分配给其他值。


顺便说一句:如果你只想保存channel ,那么可以在 function ok()


顺便说一句:您应该在var.set(OPTIONS[0])中使用[0]仅将第一个元素设置为默认/初始值。


import tkinter as tk

# --- functions ---

def select_channel():

     def ok():
         global channel

         #print("value is", var.get())
         channel = var.get()
         master.destroy()

     OPTIONS = [
       "Red",
       "Green-red",
       "Green-blue",
       "Blue"
     ]

     master = tk.Tk()

     var = tk.StringVar(master)
     var.set(OPTIONS[0])  # initial value

     option = tk.OptionMenu(master, var, *OPTIONS)
     option.pack()

     button = tk.Button(master, text="OK", command=ok)
     button.pack()

     tk.mainloop()

# --- main ---

select_channel()
print('after closing window:', channel)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM