这是我目前的代码。
from tkinter import *
from tkinter import ttk, filedialog
from tkinter.filedialog import askopenfile
import os
def main():
path = open_file()
print(path)
# Create an instance of tkinter frame
win = Tk()
# Set the geometry of tkinter frame
win.geometry("700x350")
def open_file():
file = filedialog.askopenfile(mode='r', filetypes=[('PDF', '*.pdf')])
if file:
filepath = os.path.abspath(file.name)
quit()
print(filepath)
def quit():
win.destroy()
# Add a Label widget
label = Label(win, text="Click the Button to browse the Files", font=('Georgia 13'))
label.pack(pady=10)
# Create a Button
ttk.Button(win, text="Browse", command=open_file).pack(pady=20)
win.mainloop()
if __name__ == '__main__':
main()
我想创建一个简单的GUI来选择一个文件,然后在以后的其他函数中使用它的路径。在当前代码中,在open_file函数中窗口关闭后,文件路径会正常打印出来。但只有当print语句在函数中时才有效。如果我把它从那里移走并想打印出来(只是为了测试)或者进一步使用它从main传递给其他函数,它看起来不起作用。没有错误,但是也没有打印任何东西。有什么想法吗?
1条答案
按热度按时间n6lpvg4x1#
问题似乎是想从一个用按钮调用的函数返回一个值。这是apparently not possible。我找到的最简单的解决方案(不需要改变太多代码结构)是使用一个全局变量
filepath
。现在你几乎可以在任何地方使用它。另外,我已经从
main()
函数中删除了path = open_file()
,因为它是多余的。现在该函数只在按下按钮时调用,而不是在程序每次启动时调用。