Python 在一个函数中调用另一个函数中定义的变量,并使用按钮重置变量

Python 在一个函数中调用另一个函数中定义的变量,并使用按钮重置变量,python,tkinter,Python,Tkinter,我的python GUI应用程序生成并显示一些随机值。我有开始、停止和计算按钮。我有一个随机发生器函数。我每秒钟都在叫它。它生成一个包含两个值的列表。我在附加这些列表,以便得到一个列表列表。我只想在按下停止按钮后再次按开始时将此列表重置为空。方法get_max_list应该给出随机生成器生成的列表值的最大值。如何传递此列表值以获取\u max\u列表。(对不起,我是python学习者) 对于第一个问题,如前所述,您没有为您的列表calc\u list声明global def start_me()

我的python GUI应用程序生成并显示一些随机值。我有开始、停止和计算按钮。我有一个随机发生器函数。我每秒钟都在叫它。它生成一个包含两个值的列表。我在附加这些列表,以便得到一个列表列表。我只想在按下停止按钮后再次按开始时将此列表重置为空。方法get_max_list应该给出随机生成器生成的列表值的最大值。如何传递此列表值以获取\u max\u列表。(对不起,我是python学习者)


对于第一个问题,如前所述,您没有为您的列表
calc\u list
声明
global

def start_me():
    global start_status, calc_list
    ...
    calc_list=[]
对于
get\u max\u list
函数,它需要一个参数
calc\u list
。您需要通过修改
thread
lambda函数来提供列表作为参数:

calcButton = tk.Button(win, text="calculate", state=tk.DISABLED, command= lambda:threading.Thread(target = get_max_list,args=(calc_list,)).start())
或者干脆让您的函数根本不接受arg:

def get_max_list():
    return [max(x) for x in zip(*calc_list)]

您已经在
start\u me
函数中为
start\u状态声明了
global
。您不能只将
计算列表
添加到全局声明中,例如
全局启动状态、计算列表
?但如果这样做,我无法初始化为空列表。我收到错误
global calc\u list=[]
尝试此操作,得到无效语法错误。在randomGenerator方法中定义了
global calc\u list
。按下“计算”按钮时仍然出现错误。错误:get\u max\u list()缺少1个必需的位置参数:“calc\u list”
谢谢。它解决了我所有的问题,除了一个新的。如果我在4秒钟后按“计算”按钮,
TypeError:get\u max\u list()接受1个位置参数,但给出了4个
。因为每秒都有一个新的
计算列表。我不知道为什么不接受最后一个!解决了!刚刚删除了函数定义中的参数
def get_max_list():
    return [max(x) for x in zip(*calc_list)]