如何成功关闭 Tkinter 对话框并存储变量?
Posted
技术标签:
【中文标题】如何成功关闭 Tkinter 对话框并存储变量?【英文标题】:How to close a Tkinter Dialog box successfully and store variables? 【发布时间】:2021-11-21 14:51:44 【问题描述】:我有一个 python 代码(我的主要代码),我想使用 Tkinter 在顶部添加一个 GUI。主代码当前有两个我在主代码中硬编码的目录。基本上,该代码将文件从一个目录(input_folder)移动到另一个目录(output_folder)。但是,我想创建一个 GUI,使用户能够单击两个按钮来浏览输入和输出文件夹目录。
我正在使用 Jupyter Notebooks,问题是在我选择 input_folder 后,即使使用了 destroy 命令,它也不会关闭对话框,并且单元格旁边的“星号”不会更改为数字通常表示命令已成功执行。如果一切都成功关闭,那么 input_folder 和 output_folder 都会将正确的目录存储到这些变量中,之后我的“主代码”将完美运行。
这是我的 Tkinter 代码,如果有人可以提供帮助,我将不胜感激。谢谢!
# Import the required Libraries
from tkinter import *
from tkinter import ttk, filedialog
from tkinter.filedialog import askdirectory
from tkinter.filedialog import askopenfile
# Create an instance of tkinter frame
win = Tk()
# Set the geometry of tkinter frame
win.geometry("700x350")
def open_file():
input_folder = askdirectory(title = 'Select Folder')
print(input_folder)
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)
#ttk.Button(win, text = "Quit", command=exit).pack(pady = 30)
win.mainloop()
【问题讨论】:
global input_folder
应该这样做
那会去哪里?
【参考方案1】:
在open_file()
函数中,首先添加global input_folder
。
Learn more about global and local variables in python
另外,只是一个小建议 - 避免从模块中导入所有内容 (*
) 并多次导入模块。您导入了 tkinter.filedialog
几乎 3 次。
【讨论】:
以上是关于如何成功关闭 Tkinter 对话框并存储变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python Tkinter 中创建一个按钮以将整数变量增加 1 并显示该变量?