kivyids在分配属性时返回KeyError

2024-04-25 01:07:17 发布

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

我试图在kivy 1.10.1框架中创建一个函数,该函数理论上可以形成一组由多个圆组成的组。它使用给定半径的参数形式计算球体中心的位置。在这种情况下,我想为字母表中的每个字母画一个圆圈。我为每个字母创建了一个新的Letter小部件,但是每当它试图添加位置属性时,它都会返回一个KeyError: 'A',其中有一个我想在self.add_widget(Letter(id=letter))中分配的键)我试图获取的。在

在主.py公司名称:

from kivy.app import App
from kivy.uix.widget import Widget
import math
import string


class Letter(Widget):
    pass


class MainWidget(Widget):
    def __init__(self, **kwargs):
        super(MainWidget, self).__init__(**kwargs)

        theta = 0
        for letter in string.uppercase:
            coord_x = 100 * math.cos(theta)
            coord_y = 100 * math.sin(theta)

            self.add_widget(Letter(id=letter))
            self.ids[letter].center_x = coord_x
            self.ids[letter].center_y = coord_y

            theta += 360./float(len(string.uppercase))


class MainApp(App):
    def build(self):
        return MainWidget()


if __name__ == '__main__':
    MainApp().run()

在主电压kv公司名称:

^{pr2}$

Tags: 函数importselfstring字母mathwidgetclass
1条回答
网友
1楼 · 发布于 2024-04-25 01:07:17

self.ids只保存在kv中创建的小部件的id。在Python中不需要它,因为已经有了对小部件的方便引用:

l = Letter()
self.add_widget(l)
l.center_x = coord_x
l.center_y = coord_y

相关问题 更多 >