【发布时间】:2021-10-27 01:48:30
【问题描述】:
在 Tkinter 中我发现了一个小问题。在使用 Tkinter simpledialog 提示后,我无法使用用户可以输入字母的 Entry/Text/Scrolledtext/任何小部件。输入小部件在使用提示之前工作正常,但在提示之后我无法在小部件中输入内容。就好像小部件被禁用了一样。不会抛出异常。但是,一旦我单击另一个窗口并再次单击我的 Tkinter 窗口,我就可以再次访问该小部件。
我尝试在入口小部件上使用focus_get 方法。它不起作用。
我也尝试过entry.config(state='normal')。那是行不通的。
我想不出还有什么可以尝试的。搜索网络不起作用;没有相关的东西出现。
下面是一些示例代码:
import tkinter as tk
import tkinter.simpledialog as dialog
def get_string():
string = dialog.askstring("Title", "Prompt")
print(string)
root = tk.Tk()
entry = tk.Entry(root)
button = tk.Button(root, text="Get String", command=get_string)
entry.pack()
button.pack()
root.mainloop()
要显示问题,您需要点击按钮,然后尝试使用入口小部件;它对我不起作用。
我在 macOS 上使用 Python 3.9.6。
编辑:经过几个人的评论,这个问题可能是macOS Big Sur特有的; Windows、OSX 或 Linux 上不存在此问题。
【问题讨论】:
-
它对我有用。 (Windows 11)
-
@Sujay 当我也使用 Windows 时,它确实有效,但在我转换到 macOS 后它就不起作用了。
-
@Matiiss 不,我的意思是提示关闭后,进入小部件就无法访问了。
-
@DaniyalWarraich 好的,尽管无法重现该问题,您还想提其他任何特定行为吗?还是无论您如何尝试,这种情况总是会发生?还有其他问题吗?如果您有多个输入框会怎样? (愚蠢的问题,但你能用给定的代码重现这个问题吗?
-
@j_4321 它可能是 macOS Big Sur 特有的。