gpt4 book ai didi

python - Python 初学者图形程序给出 'out of stack space' 错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:41 30 4
gpt4 key购买 nike

我目前正在使用 Zelle 的介绍性文本学习 Python,并且我正在尝试重新创建一个使用附带文件 graphics.py 的示例程序。因为我使用的是 Python 3.1,而文本是为 2.x 编写的,所以我使用的是位于 http://mcsp.wartburg.edu/zelle/python 的 GraphicsPy3.py 文件。并在我的电脑上将其重命名为 graphics.py。

名为futval_graph.py的文件如下:

from graphics import *

def main():
print("This program plots the growth of a 10-year investment.")

principal = eval(input("Enter the initial principal: "))
apr = eval(input("Enter the annualized interest rate: "))

win = GraphWin("Investment Grown Chart", 320, 420)
win.setBackground("white")
Text(Point(20, 230), ' 0.0K').draw(win)
Text(Point(20, 180), ' 2.5K').draw(win)
Text(Point(20, 130), ' 5.0K').draw(win)
Text(Point(20, 80), ' 7.5K').draw(win)
Text(Point(20, 30), '10.0K').draw(win)

# Rest of code is here but I've commented it out to isolate the problem.

main()

当我在新的 IDLE session 上运行“import futval_graph”时,程序只是运行,然后在输入“apr”后挂起,而没有打开新的图形窗口。当我从命令行运行程序时,我得到以下结果:

C:\Python31>futval_graph.py
This program plots the growth of a 10-year investment.
Enter the initial principal: error in background error handler:
out of stack space (infinite loop?)
while executing
"::tcl::Bgerror {out of stack space (infinite loop?)} {-code 1 -level 0 -errorco de NONE -errorinfo {out of stack space (infinite loop?)
while execu..."

特别令人沮丧的是,当进入新的 IDLE session 时,这一系列命令仍然有效。然后,在所有命令都自行运行后从 IDLE 运行“import futval_graph”时,futval_graph 正常工作。

所以我的问题是:如何让 futval_graph.py 从命令行和 IDLE 正常运行?对不起,如果我对问题的解释有点分散。让我知道是否有任何进一步的信息有助于澄清。

最佳答案

graphics.py 的 Python 3 版本似乎有问题。

我下载了 Python 3 版本,将其重命名为 graphics.py,然后运行以下命令。

PS C:\Users\jaraco\Desktop> python
Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from graphics import *
>>> dir()
['BAD_OPTION', 'Circle', 'DEAD_THREAD', 'DEFAULT_CONFIG', 'Entry', 'GraphWin', 'GraphicsError', 'GraphicsObject', 'Image', 'Line', 'OBJ_ALREADY_DRAWN', 'Oval',
'Pixmap', 'Point', 'Polygon', 'Queue', 'Rectangle', 'Text', 'Transform', 'UNSUPPORTED_METHOD', '\_\_builtins\_\_', '\_\_doc\_\_', '\_\_name\_\_', '\_\_package\_\_', 'atexit', 'color_rgb', 'copy', 'os', 'sys', 'test', 'time', 'tk']
>>> error in background error handler:
out of stack space (infinite loop?)
while executing
"::tcl::Bgerror {out of stack space (infinite loop?)} {-code 1 -level 0 -errorcode NONE -errorinfo {out of stack space (infinite loop?)
while execu..."

如您所见,我得到了同样的错误,而且我什至没有在模块中执行任何操作。库本身似乎有问题,而不是您在代码中所做的事情。

我会按照作者的建议将此报告给作者。

我确实发现如果我简单地导入图形模块我没有得到错误。

>>> import graphics
>>> dir(graphics)

我发现,如果我对您的代码执行此操作,然后将引用 GraphWin 更改为 graphics.GraphWin,将 Text 更改为 graphics.Text,并将 Point 更改为 graphics.Point,问题似乎就消失了,我可以从命令行。

import graphics

def main():
print("This program plots the growth of a 10-year investment.")

principal = eval(input("Enter the initial principal: "))
apr = eval(input("Enter the annualized interest rate: "))

win = graphics.GraphWin("Investment Grown Chart", 320, 420)
win.setBackground("white")
graphics.Text(graphics.Point(20, 230), ' 0.0K').draw(win)
graphics.Text(graphics.Point(20, 180), ' 2.5K').draw(win)
graphics.Text(graphics.Point(20, 130), ' 5.0K').draw(win)
graphics.Text(graphics.Point(20, 80), ' 7.5K').draw(win)
graphics.Text(graphics.Point(20, 30), '10.0K').draw(win)

# Rest of code is here but I've commented it out to isolate the problem.

main()

为什么会这样?它不应该。看起来 graphics.py 模块有一些行为不正常的副作用。

我怀疑您在 Python 2.x 版本下不会遇到这些错误。

关于python - Python 初学者图形程序给出 'out of stack space' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1372949/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com