【问题标题】:Python IDLE not working (ZeroDivisionError)Python IDLE 不工作(ZeroDivisionError)
【发布时间】:2020-12-03 05:08:37
【问题描述】:

尝试打开 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

我似乎找不到关于此特定错误的其他帖子。我该如何解决这个问题

【问题讨论】:

    标签: python python-idle


    【解决方案1】:

    尝试重新安装 python 并闲置。虽然错误意味着在行

    self.width = pixel_width // zero_char_width

    zero_char_width=0 并且任何数字除以 0 都会产生错误

    ZeroDivisionError: 整数除以零或取模

    【讨论】:

      【解决方案2】:

      看来问题出在我的.idlerc 文件夹中。我使用自定义主题,在完全删除该文件夹后,IDLE 正常运行。

      如果有人好奇并且有同样的问题,.idlerc 的完整路径在C:\Users\(user)\.idlerc\

      【讨论】:

        【解决方案3】:

        您可能想查看pixel_width 是否为零并且问题是ZeroDivisionError

        Try:
            self.width = pixel_width // zero_char_width
        except ZeroDivisionError as e:
            print(e)
        

        这是调试提示,很可能无法解决您的问题。

        【讨论】:

          【解决方案4】:

          我以前没有见过这个错误。以下是来自 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 中的错误。

          【讨论】:

            猜你喜欢
            • 2015-01-13
            • 1970-01-01
            • 1970-01-01
            • 2016-05-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多