【发布时间】:2014-09-26 04:30:19
【问题描述】:
当我运行此代码时,文件选择器会出现,然后当我完成它时,我无法输入条目小部件,直到我专注于另一个窗口然后再回来。为什么会这样?
import tkinter as tk
from tkinter.filedialog import askopenfilename
location = ''
start = tk.Tk()
tk.Label(text='What is the name of your table?').pack()
box = tk.Entry(start, exportselection=0, state=tk.DISABLED)
box.pack()
button = tk.Button(start, text='OK', command=lambda e: None)
button.pack()
location = askopenfilename(defaultextension='.db',
title="Choose your database",
filetypes=[('Database Files', '.db'), ('All files', '*')])
box.config(state=tk.NORMAL)
start.mainloop()
【问题讨论】:
-
你是在 OSX 上运行这个吗?
-
我不知道为什么,但我想你可以先做 askopenfilename 然后 mainloop start...
-
我不在 OSX 上,我在 Windows 7 和 8.1 上。在 askopenfilename 窗口关闭之前,我怎样才能让主循环不启动?
-
在 askopenfilename 关闭之前不运行主循环几乎是不可能的,因为它总是需要一个根窗口或主窗口,因此您可以创建一个临时窗口并执行 root.withdraw()
-
入口小部件的东西可能是 Python 2 中的一个错误,所以我会考虑更新到 Python 3 并在那里使用那个 tkinter。
标签: python tkinter tkinter-entry filedialog