乌龟键盘绑定,为什么它们不断崩溃? - python

#Turtle messing around
import turtle
import os


wn = turtle.Screen()
wn.bgcolor("black")

border = turtle.Turtle()
border.speed(0)
border.penup()
border.color("blue")
border.setposition(-200,-200)
border.setheading(90)
border.pensize(3)
border.pendown()
for x in range(4):
border.fd(400)
border.rt(90)
border.penup()
border.fd(300)
border.rt(90)
border.hideturtle()

#Player graphics
player= turtle.Turtle()
player.setposition(0,-150)
player.color("white")
player.left(90)
player.shape("triangle")
player.shapesize(1)
player.speed(0)
player.penup()
turtle.mainloop()

playerspeed = 15


#Player movement
def moveleft():
    x = player.xcor()
    x -= playerspeed
    if x < -280:
        x = -280
        player.setx(x)
def moveright():
    x = player.xcor()
    x += playerspeed
    if x > -280:
        x = 280
        player.setx(x)


wn.listen()
wn.onkeypress(moveleft, "Left")
wn.onkeypress(moveright, "Right")


turtle.mainloop()

我的代码在上面。

每当我运行它时,普通程序都不会执行任何操作(我尝试用wn替换最后三个turtle)。

但是,当我关闭窗口时,又弹出一个窗口(仅当最后三个是乌龟时),并且出现以下错误:

     ================================
>>> 
Traceback (most recent call last):
  File "REDACTED", line 54, in <module>
    wn.listen()
  File "G:\python\lib\turtle.py", line 1438, in listen
    self._listen()
  File "G:\python\lib\turtle.py", line 710, in _listen
    self.cv.focus_force()
  File "G:\python\lib\turtle.py", line 426, in focus_force
    self._canvas.focus_force()
  File "G:\python\lib\tkinter\__init__.py", line 428, in focus_force
    self.tk.call('focus', '-force', self._w)
_tkinter.TclError: can't invoke "focus" command:  application has been 
destroyed

我不太确定该怎么做,所有这些错误的内容都让我感到困惑,我也不明白,我感谢我能获得的所有帮助,谢谢。

python参考方案

问题出在第34行。当您调用turtle.mainloop()时,程序进入一个无限循环。它下面的行上的任何代码都不会执行,包括事件侦听器。

# ... unchanged code ...

player.speed(0)
player.penup()
turtle.mainloop()  # <--- infinite loop! remove this line.

# code below this line is not executed
playerspeed = 15

# ... unchanged code ...

删除此行,您将看到处理程序触发(如果不确定,请添加调试打印)。在最后一行的第二个turtle.mainloop()调用将正确运行该窗口。

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…

如何在python中将从PDF提取的文本格式化为json - python

我已经使用pyPDF2提取了一些文本格式的发票PDF。我想将此文本文件转换为仅包含重要关键字和令牌的json文件。输出应该是这样的:#PurchaseOrder {"doctype":"PO", "orderingcompany":"Demo Company", "su…

查找字符串中的行数 - python

我正在创建一个python电影播放器​​/制作器,我想在多行字符串中找到行数。我想知道是否有任何内置函数或可以编写代码的函数来做到这一点:x = """ line1 line2 """ getLines(x) python大神给出的解决方案 如果换行符是'\n',则nlines …

字符串文字中的正斜杠表现异常 - python

为什么S1和S2在撇号位置方面表现不同?S1="1/282/03/10" S2="4/107/03/10" R1="".join({"N\'" ,S1,"\'" }) R2="".join({"N\'…