Python:从函数中获取选项?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:从函数中获取选项?相关的知识,希望对你有一定的参考价值。

我正在使用Python中的Tkinter并使用OptionMenu并希望得到用户所做的选择。

ex1 = StringVar(root)
ex1.set("Pick Option")
box = OptionMenu(root, "one","two","three", command=self.choice)

def choice(self,option):
   return choice

它只在我做的时候起作用:

print choice

但我以为我可以以某种方式返回它,然后将其存储在变量中。例如,在我创建的代码的开头:

global foo
foo = ""

然后尝试:

def choice(self,option):
   foo = option
   return foo

但这没效果。有谁知道我哪里出错了?谢谢。

答案

这有效,但不确定它是你想要的。

from Tkinter import StringVar
from Tkinter import OptionMenu
from Tkinter import Tk
from Tkinter import Button
from Tkinter import mainloop

root = Tk()
ex1 = StringVar(root)
ex1.set("Pick Option")
option = OptionMenu(root, ex1, "one", "two", "three")
option.pack()


def choice():
    chosen = ex1.get()
    print 'chosen {}'.format(chosen)
    # set and hold using StringVar
    ex1.set(chosen)
    root.quit()
    # return chosen


button = Button(root, text="Please choose", command=choice)
button.pack()
mainloop()
# acess the value from StringVar ex1.get
print 'The final chosen value {}'.format(ex1.get())
另一答案

问题是为什么建议您首先学习类并使用它们来编程GUI https://www.tutorialspoint.com/python3/python_classes_objects.htm的示例

import sys
if 3 == sys.version_info[0]:  ## 3.X is default if dual system
    import tkinter as tk     ## Python 3.x
else:
    import Tkinter as tk     ## Python 2.x

class StoreAVariable():
    def __init__(self, root):
        self.root=root
        self.ex1 = tk.StringVar(root)
        self.ex1.set("Pick Option")
        option = tk.OptionMenu(root, self.ex1, "one", "two", "three")
        option.pack()

        tk.Button(self.root, text="Please choose", command=self.choice).pack()

    def choice(self):
        self.chosen = self.ex1.get()

        ## the rest has nothing to do with storing a value
        print('chosen {}'.format(self.chosen))
        self.ex1.set(self.chosen)
        self.root.quit()
        # return chosen


root = tk.Tk()
RV=StoreAVariable(root)
root.mainloop()

print('-'*50)
print('After tkinter exits')
print('The final chosen value={}'.format(RV.chosen))
另一答案

在方法中添加global语句:

def choice(self,option):
   global foo
   foo = option

以上是关于Python:从函数中获取选项?的主要内容,如果未能解决你的问题,请参考以下文章

android使用片段从相机或画廊获取照片[重复]

片段不起作用并且有错误

如何从选项卡片段中的 AsyncTask Resftful WS 加载批量数据

在选项卡式应用程序中的何处放置位置代码?

通过 id 从片段获取编辑文本到其托管活动

Android:如何在选项卡内从一个片段导航到另一个片段? [关闭]