【问题标题】:How do I pass a variable between two functions in tkinter python?如何在 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

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

请帮忙!

【问题讨论】:

    标签: python function variables tkinter


    【解决方案1】:

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

    global folder
    folder = filedialog.askdirectory()
    

    【讨论】:

    • 也许你可以添加一个解释,以方便提问者
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2019-06-28
    相关资源
    最近更新 更多