首页 > 解决方案 > Python IDLE 不工作(ZeroDivisionError)

问题描述

尝试打开 IDLE 时,没有任何反应,当我尝试在命令提示符下运行 IDLE 时,出现以下错误:

Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\Lib\idlelib\idle.pyw", line 17, in <module>
    idlelib.pyshell.main()
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\idlelib\pyshell.py", line 1516, in main
    shell = flist.open_shell()
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\idlelib\pyshell.py", line 329, in open_shell
    self.pyshell = PyShell(self)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\idlelib\pyshell.py", line 874, in __init__
    OutputWindow.__init__(self, flist, None, None)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\idlelib\outwin.py", line 80, in __init__
    EditorWindow.__init__(self, *args)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\idlelib\editor.py", line 218, in __init__
    self.set_width()
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\idlelib\editor.py", line 366, in set_width
    self.width = pixel_width // zero_char_width
ZeroDivisionError: integer division or modulo by zero

我似乎找不到关于这个特定错误的不同帖子。我该如何解决

标签: pythonpython-idle

解决方案


我以前没有见过这个错误。这是来自 idlelib/editor.py 的相关代码。

    # Divide the width of the Text widget by the font width,
    # which is taken to be the width of '0' (zero).
    # http://www.tcl.tk/man/tcl8.6/TkCmd/text.htm#M21
    zero_char_width = \
        Font(text, font=text.cget('font')).measure('0')
    self.width = pixel_width // zero_char_width

您必须选择了一种非默认字体,它为“0”提供了 0 度量。既然您删除了 .idlerc,您还记得那是什么字体吗?(您的自定义颜色主题不应该影响这一点。)我想知道这是一次性故障还是此代码需要补丁。

写那行的人显然认为“0”的宽度为 0 是不可能的。除非字体将代码点 48 (ord('0')) 映射到空或零宽度“字符”,否则会很奇怪,否则宽度 0 将是字体数据、tk 或 Windows 中的错误。


推荐阅读