如何成功关闭 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 对话框并存储变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何让tkinter自动关闭窗口后显示另一个窗口?

Tkinter:等待用户点击

如何在 Python Tkinter 中创建一个按钮以将整数变量增加 1 并显示该变量?

Datepicker:单击按钮时如何弹出日期选择器并将值存储在变量中[关闭]

如何在 Tkinter 中将文本条目存储为变量? [复制]

Python Tkinter 中的单选按钮值