【问题标题】:Tkinter Text widget unusable after displaying a tkinter.simpledialog prompt显示 tkinter.simpledialog 提示后,Tkinter Text 小部件无法使用
【发布时间】: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 特有的。

标签: python macos tkinter


【解决方案1】:

所以,我暂时搁置了这个项目,现在我已经更新到 macOS Monterey 和 Python 3.10。通过这些更新,我现在发现问题消失了。

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2011-04-16
    • 2011-08-21
    • 2022-08-10
    相关资源
    最近更新 更多