尝试 运行 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.
我用
安装了 python3.9sudo 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.