gpt4 book ai didi

python - 为什么 tkinter 给我一个 "invalid command name .37395760"错误?

转载 作者:行者123 更新时间:2023-12-01 04:14:21 25 4
gpt4 key购买 nike

当我尝试运行我的程序时,出现了一个奇怪的错误。它应该在 TK() 窗口上绘制一个红色圆圈。

这是我的代码:

from tkinter import *

class Circle:
def __init__(self, radius, points = 0, xcoordinate = 0, ycoordinate = 0):
self.radius = radius
self.points = points
self.color = "red"
self.xcoordinate = xcoordinate
self.ycoordinate = ycoordinate

class World:
def __init__(self):
self.constructor = Tk()
self.constructor.title("Circle")
self.canvas = Canvas(self.constructor, width = 200, height = 200, borderwidth = 0, highlightthickness = 0, bg = "black")
self.canvas.grid()
self.constructor.mainloop()

def drawPlayer(self):
player = Circle(50)
self.canvas.create_oval(player.xcoordinate - player.radius, player.ycoordinate - player.radius, player.xcoordinate + player.radius, player.ycoordinate + player.radius, fill = player.color)

c = World()
c.drawPlayer()

我收到此错误:

File "C:\Python34\Lib\tkinter\__init__.py", line 2318, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: invalid command name ".37395760"

我重读了甚至写下了我的代码来看看哪里出了问题,但我就是找不到错误。

注意:此错误发生在我运行它后,出现一个带有黑色 Canvas 但没有圆圈的窗口。

谢谢!

最佳答案

一旦主循环退出(self.constructor.mainloop()),小部件就不再存在。当您执行self.canvas.create_oval(...)(其中由c.drawPlayer()触发),您正在尝试访问已删除的小部件。

Tkinter 的设计根本不允许您在主窗口被销毁后访问小部件。

完成绘制元素后调用mainloop()

关于python - 为什么 tkinter 给我一个 "invalid command name .37395760"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504692/

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