我不确定我的代码中出错了什么(下面)。我试图获得一个可以运行的函数,并将结果返回给变量y。想法是让用户点击选择文件按钮,这将打开对话框,然后一旦用户选择了一个文件,将文件路径保存到变量y,以便我可以在我的代码中的其他地方使用它
任何帮助都会被哄骗
from tkinter import Tk, Button, filedialog, Label
root = Tk()
root.title("test")
# Create a button with a custom callback
def openfiledialog():
global y
y = filedialog.askopenfilename(initialdir = "/",title = "Select f .
ile",filetypes = (("text file","*.txt"),("all files","*.*")))
return y
print(y)
file_button = Button(root, text='Select File', command=openfiledialog)
file_button.pack()
exit_button = Button(root, text='Exit Program', command=root.destroy)
exit_button.pack()
w = Label(root, text='\n'"Step 1: Make sure the URL's in file are
properly formatted, one URL per line"'\n''\n'
"Step 2: Select file"'\n''\n'
"Step 3: click run")
w.pack()
root.mainloop()
答案 0 :(得分:1)
直接将值分配给全局变量时,不需要返回值。
我也认为你写的标签的方式是非正统的。您可以使用一组引号完成您想要做的事情。
当我有一个已知的全局变量时,我先在它之前定义它。
您的print(y)
声明无法正常工作。它只是在你的程序开始时运行一次,并且它运行的那一刻y
不等于任何东西。
您需要将print语句移动到函数中。
更新:我添加了一个按钮来帮助您进行以下评论。
此按钮将打印当前存储的y
。
以下代码是对代码的修改。
from tkinter import Tk, Button, filedialog, Label
root = Tk()
y = ""
root.title("test")
def openfiledialog():
global y
y = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("text file","*.txt"),("all files","*.*")))
def check_path():
global y
print(y)
file_button = Button(root, text='Select File', command=openfiledialog)
file_button.pack()
exit_button = Button(root, text='Exit Program', command=root.destroy)
exit_button.pack()
w = Label(root, text="\nStep 1: Make sure the URL's in file are properly formatted, one URL per line\n\nStep 2: Select file\n\nStep 3: click run")
w.pack()
Button(root, text="Print current saved path", command = check_path).pack()
root.mainloop()