【问题标题】:Module turtle has no write member模块turtle没有写成员
【发布时间】:2018-03-27 08:43:47
【问题描述】:

我在 VS Code 上使用 Python,虽然我仍在学习一般的编码,但对此我有点困惑。

我正在运行这段代码:

import scipy.integrate
import turtle

ans, err = scipy.integrate.quad(lambda x: x**2,0.,4)

print(ans) 
turtle.write(ans, font=("Comic Sans", 40, "normal"))

当我运行调试器时,turtle 被标记并且 lint 说 turtle 没有 write 成员,嗯,没错。 我在没有调试的情况下运行了代码,并弹出了正确的窗口,但它在半秒后关闭。所有这一切,即使我在我用turtle写的最后一行标记了中断。

为了查看我的代码是否有问题,我在 PY shell 中运行它,它运行良好,没有问题。

我猜这个问题是特定于 VS Code 的,虽然我不确定它是否是如何导入海龟的(我应该只导入我使用的函数吗?)

【问题讨论】:

    标签: python visual-studio-code windows-10 turtle-graphics


    【解决方案1】:

    当我运行调试器时,乌龟被标记并且皮棉说乌龟 没有写成员

    Turtle 公开了两个接口,一个是函数式的,一个是面向对象的。功能接口是在加载时派生的,因此静态分析工具看不到它,因此会出现 lint 错误。而不是 functional 接口:

    import scipy.integrate
    import turtle
    
    ans, err = scipy.integrate.quad(lambda x: x**2, 0.0, 4)
    
    turtle.write(ans, font=("Comic Sans", 40, "normal"))
    

    尝试使用面向对象的接口:

    import scipy.integrate
    from turtle import Turtle, Screen
    
    ans, err = scipy.integrate.quad(lambda x: x**2, 0.0, 4)
    
    yertle = Turtle()
    
    yertle.write(ans, font=("Comic Sans", 40, "normal"))
    

    正确的窗口弹出,但半秒后关闭

    乌龟程序通常以调用mainloop() 方法(屏幕)或函数结束。这会将事件处理交给 tkinter。一些编程环境不需要它,尽管我相信他们知道禁用它。添加对 .mainloop() 的调用作为代码中的最后一件事,以查看是否可以解决您的问题:

    screen = Screen()
    screen.mainloop()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 2020-06-20
      • 2020-08-06
      • 2020-09-01
      • 2020-03-08
      • 2021-08-24
      • 1970-01-01
      相关资源
      最近更新 更多