python tclerror_解决python - "tkinter.TclError: invalid command name" error after calling root.destroy...

I am in the process of learning tkinter on Python 3.X. I am writing a simple program which will get one or more balls (tkinter ovals) bouncing round a rectangular court (tkinter root window with a canvas and rectangle drawn on it).

I want to be able to terminate the program cleanly by pressing the q key, and have managed to bind the key to the root and fire the callback function when a key is pressed, which then calls root.destroy().

However, I'm still getting errors of the form _tkinter.TclError: invalid command name ".140625086752360" when I do so. This is driving me crazy. What am I doing wrong?

from tkinter import *

import time

import numpy

class Ball:

def bates():

"""

Generator for the sequential index number used in order to

identify the various balls.

"""

k = 0

while True:

yield k

k += 1

index = bates()

def __init__(self, parent, x, y, v=0.0, angle=0.0, accel=0.0, radius=10, border=2):

self.parent = parent # The parent Canvas widget

self.index = next(Ball.index) # Fortunately, I have all my feathers individually numbered, for just such an eventuality

self.x = x # X-coordinate (-1.0 .. 1.0)

self.y = y # Y-coordinate (-1.0 .. 1.0)

self.radius = radius # Radius (0.0 .. 1.0)

self.v = v # Velocity

self.theta = angle # Angle

self.accel = accel # Acceleration per tick

self.border = border # Border thickness (integer)

self.widget = self.parent.canvas.create_oval(

self.px() - self.pr(), self.py

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值