簡體   English   中英

如何在 tkinter python 中的兩個函數之間傳遞變量?

[英]How do I pass a variable between two functions in tkinter python?

這是我的代碼:

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

據我了解,我需要以某種方式在兩個函數之間傳遞“文件夾”變量。 我已經嘗試了很多東西,比如使用類,老實說,我不是很熟悉。

請幫忙!

這是使用函數時的經典問題。 在一個函數中,所有變量都是局部變量,因此它們只存在於該函數中,您需要做的是將變量全局化,使其存在於整個程序中。 這是通過在定義所述變量之前先說 global 和變量名來完成的。 您的新代碼應如下所示。

global folder
folder = filedialog.askdirectory()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM