Чем именно неправильен этот код?

  • 12 августа 2023 г. 16:06
Ответы на вопрос 3
В данном коде неправильным является последняя строка в методе `reset_angle`:

```python
button.angle = 0
```

Ошибка заключается в том, что в данной строке используется атрибут `angle`, который не существует для виджета `Button`. Вместо этого, можно использовать атрибут `rotation`, который отвечает за угол поворота виджета. Правильный код будет выглядеть так:

```python
button.rotation = 0
```
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.animation import Animation

class MyApp(App):
    def build(self):
        layout = BoxLayout(orientation='vertical')
        button = Button(text='Rotate Me', size_hint=(None, None), size=(200, 100))
        layout.add_widget(button)
        
        def on_button_click(instance):
            anim = Animation(angle=360, duration=1)
            anim.bind(on_complete=reset_angle)
            anim.start(button)
        
        button.bind(on_release=on_button_click)
        
        return layout
        
    def reset_angle(self, *args):
        button = args[1]
        button.angle = 0

if __name__ == '__main__':
    MyApp().run()
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.animation import Animation

class MyApp(App):
    def build(self):
        layout = BoxLayout(orientation='vertical')
        button = Button(text='Rotate Me', size_hint=(None, None), size=(200, 100))
        layout.add_widget(button)
        return layout

    def on_button_click(instance):
        anim = Animation(angle=360, duration=1)
        anim.bind(on_complete=self.reset_angle)
        anim.start(button)
        
    def reset_angle(self, *args):
        button = args[1]
        button.angle = 0

if __name__ == 'main':
    MyApp().run()

Улучшенный код
Похожие вопросы