python - 如何在 tkinter python 中的两个函数之间传递变量?

标签 python function variables tkinter

这是我的代码:

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:未定义名称“文件夹”

据我了解,我需要以某种方式在两个函数之间传递“文件夹”变量。我已经尝试过很多东西,比如使用类,老实说,我不太熟悉。

请帮忙!

最佳答案

这是使用函数时的经典问题。在一个函数中,所有变量都是局部变量,因此它们只存在于该函数中,您需要做的是将变量全局化,以便它存在于整个程序中。这是通过在定义所述变量之前说出全局然后是变量名来完成的。 您的新代码应如下所示。

global folder
folder = filedialog.askdirectory()

关于python - 如何在 tkinter python 中的两个函数之间传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60356612/

相关文章:

python - 如何处理 asyncio 中嵌套函数的 "This event loop is already running"错误?

c - 解决这个识别功能?

PHP 从函数中获取变量

javascript - 在 else 语句中看不到 if 语句的 jQuery javascript 变量

sql - SSIS 将值保存为参数

python - 为什么 datetime.strptime 在这个简单的例子中不起作用?

python - 内省(introspection)调用对象

python - 模型继承效果不佳

Javascript 按钮 onclick 函数未定义

function - 获取Lua脚本中的所有函数