我正在一个项目中尝试获取文件目录。我在将目录分配给全局变量时遇到问题,因此...
这是我的尝试:
dir = None
def print_dir(event):
print(dir)
def main:
root = Tk()
def get_dir(event):
ftypes = [('PDF',"*.pdf")]
root.fileName = askopenfilename(filetypes = ftypes)
dir = root.fileName
return
btn = Button(root, text="+ Get dir")
btn.grid(row=3, column=6)
btn.bind("<Button-1>", get_dir)
btn_two = Button(root, text="+ Print dir")
btn_two.grid(row=3, column=6)
btn_two.bind("<Button-1>", print_dir)
root.mainloop()
即使使用第一个按钮打开目录文件,也不会打印任何内容。
答案 0 :(得分:0)
对于您为什么要在print_dir()
之外定义函数main()
和在get_dir()
内定义函数main()
的原因,我不清楚。根本没有道理。
但是;您可以在函数folder
中为变量get_dir()
分配一个值,该值在本地范围内。退出函数时,变量将被垃圾回收。如果在更广泛的范围内定义,Python将使用变量folder
。
这可能有用。
from tkinter import *
from tkinter.filedialog import *
folder = None
def print_dir(event):
print(folder)
def main():
global folder # Making variable "folder" global
root = Tk()
def get_dir(event):
global folder # Making variable "folder" global
ftypes = [('PDF',"*.pdf")]
root.fileName = askopenfilename(filetypes = ftypes)
folder = root.fileName
return
btn = Button(root, text="+ Get dir")
btn.grid(row=2, column=6)
btn.bind("<Button-1>", get_dir)
btn_two = Button(root, text="+ Print dir")
btn_two.grid(row=3, column=6)
btn_two.bind("<Button-1>", print_dir)
root.mainloop()
main()