どのように私はTkinterのパイソンに2つの関数間で変数を渡すのですか?

MicasiO:

ここに私のコードは次のとおりです。

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

私が理解したように、私は何とか2つの関数の「フォルダ」の変数を渡す必要があります。私はすでに正直、私は本当に慣れていないだと、クラスを使用してのようなものの多くを試みました。

助けてください!

ベン:

機能を使用するとき、これは古典的な問題です。彼らは唯一のあなたはそれがプログラム全体に存在するように、変数をグローバル化されて何をする必要があるか、その関数内に存在するように、関数内のすべての変数はローカルです。これは言った変数を定義する前に、グローバル、その後、変数名言うことによって行われます。あなたの新しいコードは次のようになります。

global folder
folder = filedialog.askdirectory()

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=4630&siteId=1