Python TypeError:列表索引必须是整数,而不是Tkinter中的浮点变量

Python TypeError:列表索引必须是整数,而不是Tkinter中的浮点变量,python,tkinter,integer,Python,Tkinter,Integer,我是编程新手,所以如果我的问题是显而易见的,请原谅我。 本质上,我试图创建一个基本的极坐标系,用于Tkinter,但是,我有一些问题 以下是相关的代码位: def polar(self, theta, radius, xC, yC): thetarad = -theta * (math.pi / 180) xprime = xC + math.cos(thetarad) * radius yprime = yC + math.sin(thetarad) * radius

我是编程新手,所以如果我的问题是显而易见的,请原谅我。 本质上,我试图创建一个基本的极坐标系,用于Tkinter,但是,我有一些问题

以下是相关的代码位:

def polar(self, theta, radius, xC, yC):
    thetarad = -theta * (math.pi / 180)
    xprime = xC + math.cos(thetarad) * radius
    yprime = yC + math.sin(thetarad) * radius
    return (xprime, yprime)

def draw(self, c):        

    # create X-coordinate guide list
    xspaces = 55    # number of guides in the guide list
    xgridwidth = 1.0 * self.width / xspaces
    x = []
    for i in range(xspaces+1):
        x.append(self.left + i*xgridwidth)

    # create Y-coordinate guide list
    yspaces = 100    # number of guides in the guide list
    ygridwidth = 1.0 * self.height / yspaces
    y = []
    for i in range(yspaces+1):
        y.append(self.top + i*ygridwidth)


    xC = x[30]
    yC = y[25]

    theta = 0
    radius = 15
    [xprime, yprime]=self.polar(theta, radius, xC, yC)
    petalp1 = (  (x[xprime], y[yprime])  )
最上面和最下面的部分是我得到的错误。本质上,我只需要xprime和yprime作为整数返回,这样在建立p1时,它们可以和原始数一样使用。谢谢你的帮助

完全错误:

    Traceback (most recent call last):
  File "E:FileName.py", line 34, in <module>
    daisy.draw(c)
  File "E:FileName2.py", line 174, in draw
    petalp1 = (x[int(xprime)], y[int(yprime)])
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“E:FileName.py”,第34行,在
黛西,画(c)
文件“E:FileName2.py”,第174行,在绘图中
petalp1=(x[int(xprime)],y[int(yprime)])
索引器:列表索引超出范围

似乎
int(xprime)
xspaces
(值:55)大,
int(yprime)
yspaces
(值:100)大,所以您尝试获取列表
x
(长度:55)和列表
y
(长度:100)(
x[int(xprime)]
y[int(yprime>)

你看到的问题是什么?在最后一行,如果我有“p1=((xprime,yprime)),那就没有问题,但我需要它的形式是“p1=((x[xprime],y[yprime])”。出于某种原因,我无法让xprime或yprime充当Tkinter所需的整数。为什么需要额外的括号
((x[xprime],y[yprime])
?你不能只做
(x[xprime],y[yprime])
?你确定上面这行不是你的意思(注意方括号到圆括号的变化):
(xprime,yprime)=self.polar(θ,radius,xC,yC)
完全编辑了注释:方括号到圆括号似乎没有什么区别。同样的错误。更改值似乎没有什么区别。弹出相同的“索引超出范围”错误。不过,请欣赏这个想法。
列表索引超出范围
表示
int(xprime)
和/或
int(yprime)
x[int(xprime)]中太大
和/或
y[int(yprime)]
。或者列表
x[]
和/或
y[]
的大小太小。我试着运行你的代码(使用
width=800,height=600,left=0,top=0
),我得到
int(xprime)==451
int(yprime)==150
,所以
x[451]
y[150]
不在列表中。对于
width=55
height=100
我得到
int(xprime)==45
int(yprime)==15,所以
x[45]
y[15]
在列表中。我不知道你的
宽度
高度