Tkinter create_line problem:错误的#坐标:应为偶数

2024-10-01 15:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我的第一个问题是,我正在用txt文件中的数据做一个基本的日志播放器:

代码类似于:

    for aircraft in self.logArray.itervalues():

        for logLine in aircraft:
            currentPoint = self.point(logLine[1], logLine[2])
            currentPoint = self.win2canvas(currentPoint)
            points = np.append(points, currentPoint)

        print points
        print np.size(points)
        self.canvas.create_line(points)
        points = np.array([])

所以logArray是一个字典,每个名字都包含一个种类为[time,x,y]的数组,所以每个飞机名都会有一个这样的数组。在

第二个for只转换为tkinter画布坐标,并将currentPoint附加到预先存在的(和初始化的)中。在

当它到达create_line方法时,我得到:

^{pr2}$

我已经手动检查了点数组的大小,并且确实是偶数。所以我用np.尺寸,返回398!在

我也尝试过使用非常类似的测试方法,即:

    self.canvas.create_line([123,345,234,453,23,34,45,56,67,78]) 

一切顺利!我不知道为什么,但不知怎么的,我的点数组最终得到了一个额外的元素,我不知道从哪里来的!在

感谢您的时间和耐心!在


Tags: inselftxtforcreatenpline数组
1条回答
网友
1楼 · 发布于 2024-10-01 15:30:12

我相信问题是你在使用numpy数组。这里的调用堆栈如下所示

  1. 在特金特.py,第2160行,英寸 创建返回线 自行创建('线路',参数,千瓦)
  2. 在特金特.py,第2148行,在“创建
    *(args+self.\u选项(cnf,kw)))
  3. 在数值.py,第1424行,在数组中 返回arrayString(a, 最大线宽,精度, 抑制“small,,”“,str)
  4. 在arrayprint.py,第307行,英寸 arrayString返回lst

如果你有np.数组([0.,0.,200.,100.])arrayString()返回的字符串是'[0。0100200.]'。我怀疑它会被拆分,返回['[','0','0','100.','200.]']的列表,其中有一个额外的元素'['。在

如果使用列表代替np.数组()或者即使您只是将numpy数组强制转换为一个列表,例如:

self.canvas.create_line(list(points))

不过,如果您不需要使用numpy数组的功能,那么从一开始就使用列表会更直接。在

相关问题 更多 >

    热门问题