尝试 运行 idle-python3.9 时 tkinter.simpledialog 中缺少 _setup_dialog(Linux Mint 20)

Missing _setup_dialog from tkinter.simpledialog when trying to run idle-python3.9 (Linux Mint 20)

我用

安装了 python3.9
sudo apt install python3.9

然后空闲

sudo apt install idle-python3.9

当我尝试 运行 idle-python3.9 时,我得到以下回溯:

Traceback (most recent call last):
File "/usr/bin/idle-python3.9", line 3, in <module>
    from idlelib.pyshell import main
File "/usr/lib/python3.9/idlelib/pyshell.py", line 53, in <module>
    from idlelib.editor import EditorWindow, fixwordbreaks
File "/usr/lib/python3.9/idlelib/editor.py", line 19, in <module>
    from idlelib import configdialog
File "/usr/lib/python3.9/idlelib/configdialog.py", line 26, in <module>
    from idlelib.config_key import GetKeysDialog
File "/usr/lib/python3.9/idlelib/config_key.py", line 7, in <module>
    from tkinter.simpledialog import _setup_dialog
ImportError: cannot import name '_setup_dialog' from 'tkinter.simpledialog' 
(/usr/lib/python3.9/tkinter/simpledialog.py)

果然tkinter.simpledialog中没有这个方法。四处寻找,我发现以下 python 文件正在尝试导入:

/usr/lib/python3.9/idlelib/config_key.py
/usr/lib/python3.9/idlelib/searchbase.py
/usr/lib/python3.9/idlelib/query.py

为什么 idlelib 文件和 idle-python3.9 不匹配,当它们是相同版本时,我相信是一起安装的。我该如何解决?我是新手...提前致谢。

您拥有的 IDLE 3.9.5 版本不匹配,它调用了 3.9.5 中添加到 tkinter.simpledialog 的函数,与您必须拥有的旧版本 tkinter 不匹配。您必须安装类似 thinkter-python3.9 的东西才能获得更新的 tkinter。或者 Mint 的人可能忽略了将 3.9.5 版本的 tkinter 包含在 3.9.5 python.

IDLE 和 tkinter 确实不应该单独安装,否则,IDLE 安装程序应该检查 tkinter 版本。请将此错误告知 Mint 人员。我希望它也不会感染 Ubuntu。 (Windows 和 Mac 的 python.org 安装程序会 安装或不安装 tkinter 和 IDLE,这样就不会有不匹配的问题。)

无论如何,新功能是

def _setup_dialog(w):
    if w._windowingsystem == "aqua":
        w.tk.call("::tk::unsupported::MacWindowStyle", "style",
                  w, "moveableModal", "")
    elif w._windowingsystem == "x11":
        w.wm_attributes("-type", "dialog")

在第 259 行添加。函数和函数的多次调用由 https://github.com/python/cpython/commit/9a165399aec930f27639dd173426ccc33586662b https://bugs.python.org/issue43655 and https://github.com/python/cpython/pull/25588.

PS: 'idle-python3.9 是安装名称,不是你运行。一个 运行 python.exe 或 python3.exe,取决于系统,或者一个 运行s IDLE with python(3).exe.