КИви, используя положение кругов для размещения кнопки

#python #button #kivy

Вопрос:

Я нарисовал круг. Я хочу разместить кнопку в том же положении круга. Как я могу получить координаты x и y окружности. Мой код(в файле kv):

 MainWidget:


<MainWidget>:
    canvas.after:
        Color:
            rgb: 1, 0, 0
        Ellipse:
            id: point
            size: 100, 100
            pos: 100, root.y1

    Button:
        id: No1
        pos: point.pos
        on_press: root.move()
 

Он показывает «Ошибка имени: имя «точка» не определено»

Ответ №1:

Вставьте свои виджеты BoxLayout . Вы не можете использовать идентификатор для canvas , вы должны использовать группы.

Обведите кружком над кнопкой.

 from kivy.lang import Builder
from kivy.app import App


KV = '''
Screen:
    BoxLayout:
        orientation: 'vertical'
        spacing: 10
        BoxLayout:
            size_hint_x: None
            pos_hint: {'center_x': .5}
            canvas.after:
                Color:
                    rgb: 1, 0, 0
                Ellipse:
                    size: 100, 100
                    pos: self.pos
        BoxLayout:
            Button:
                id: No1
                on_press: pass
'''


class Test(App):
    def build(self):
        return Builder.load_string(KV)


Test().run()
 

Обведите кружком кнопку.

 from kivy.lang import Builder
from kivy.app import App

KV = '''
Screen:
    BoxLayout:
        padding: 50
        Button:
            on_press: pass
            canvas.after:
                Color:
                    rgb: 1, 0, 0
                Ellipse:
                    size: self.size
                    pos: self.pos
'''


class Test(App):
    def build(self):
        return Builder.load_string(KV)


Test().run()
 

Таким образом, вы можете разместить круг в том же положении, что и кнопка.

 Ellipse:
    size: 100, 100
    pos: self.pos
 

Комментарии:

1. Я хочу получить положение круга с холста. Чтобы я мог использовать его Позже.

2. Это очень легко сделать, установите значение id BoxLayout , тогда положение круга будет — self. root.ids.canvas_layout.pos . Я вижу, ты изменил свой вопрос)