如何在 tkinter python 中的两个函数之间传递变量?
Posted
技术标签:
【中文标题】如何在 tkinter python 中的两个函数之间传递变量?【英文标题】:How do I pass a variable between two functions in tkinter python? 【发布时间】:2020-06-06 22:38:49 【问题描述】:这是我的代码:
import os
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
def click():
folder = filedialog.askdirectory()
button["text"] = folder
def click2():
folder2 = filedialog.askdirectory()
button1["text"] = folder2
def click3():
list = os.listdir(folder)
print(list)
entry = tk.Entry(root)
entry.grid(row=0, column=3)
label = tk.Label(root, text="Search from:")
label.grid(row=0, column=0)
label3 = tk.Label(root, text="Search:")
label3.grid(row=0, column=2)
label2 = tk.Label(root, text="Sort to:")
label2.grid(row=1, column = 0)
button = tk.Button(root, text="( ͡° ͜ʖ ͡°)", command=click, font=("TkDefaultFont", 12))
button.grid(row=0, column=1)
button1 = tk.Button(root, text="( ͡° ͜ʖ ͡°)", command=click2, font=("TkDefaultFont", 12))
button1.grid(row=1, column=1)
confirm = tk.Button(root, text="Confirm", command=click3, font=("TkDefaultFont", 12))
confirm.grid(row=2, column=1)
root.mainloop()
我得到一个错误:
NameError: name 'folder' is not defined
据我了解,我需要以某种方式在两个函数之间传递“文件夹”变量。我已经尝试过很多东西,比如使用类,老实说,我不是很熟悉。
请帮忙!
【问题讨论】:
【参考方案1】:这是使用函数时的经典问题。在一个函数中,所有变量都是局部的,因此它们只存在于该函数中,您需要做的是使变量全球化,使其存在于整个程序中。这是通过在定义所述变量之前先说全局然后是变量名来完成的。 您的新代码应如下所示。
global folder
folder = filedialog.askdirectory()
【讨论】:
也许你可以添加一个解释,以方便提问者以上是关于如何在 tkinter python 中的两个函数之间传递变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何从widget的函数返回值,并将其传递给Tkinter,Python中的另一个小部件的函数