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

3

这是我的代码:

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

据我理解,我需要在两个函数之间传递“folder”变量。我已经尝试过许多方式,比如使用类(但我对此并不是很熟悉)。

请帮忙解决这个问题!

1个回答

3

使用函数时,经常遇到的问题是变量仅存在于该函数中,因为它们是局部变量。您需要将其全局化,使其在整个程序中存在。要做到这一点,只需在定义变量之前使用 global 关键字加上变量名称。

修改后的代码应如下所示:

global folder
folder = filedialog.askdirectory()

也许你可以加入一些解释,以便于提问者的理解。 - Hymns For Disco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接