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

标签 python tkinter linux-mint python-idle

我安装了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/issue43655https://github.com/python/cpython/pull/25588 .

PS:'idle-python3.9是一个安装名称,而不是您运行的名称。一种运行 python.exe 或 python3.exe,具体取决于系统,或者一种使用 python(3).exe 运行 IDLE。

关于python - 尝试运行idle-python3.9(Linux Mint 20)时,tkinter.simpledialog 中缺少 _setup_dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67511353/

相关文章:

python - redis.exceptions.ConnectionError : Error 97 connecting to localhost:6379. 协议(protocol)不支持的地址族

python - 动态模块导入在 python 中不起作用 - 为什么不呢?

python - 如何设置正确的权限来使用Python Azure SDK for Graph?

python - python 图像错误

python - 在没有可用 deb 软件包的 Debian/Ubuntu 中,推荐的 pip 替代品是什么?

node.js - 在 Linux Mint 19.3 上安装 nodejs 版本 >= 10 时出现问题,它顽固地安装 nodejs 8.10

c - GTK+-3.0-dev 编译时没有这样的文件或目录 (Linux Mint/gcc)

python - 如何比较列上的两个数据框并替换为其他列值

python-3.x - 希伯来语与 tkinter - BiDi

python - 如何在按下按钮时永久更改按钮的颜色