Помощь с кодом

Karina. 234567

Новичок
Пользователь
Окт 18, 2020
16
0
1
Здравствуйте помогите пожалуйста разобраться с ошибкой в коде
 

Karina. 234567

Новичок
Пользователь
Окт 18, 2020
16
0
1
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button

from random import random
from kivy.core.window import Window
from kivy.graphics import (Color, Ellipse, Rectangle, Line)

class PainterWidget(Widget):
def on_touch_down(self, touch):
with self.canvas:
Color(random(), random(), random(), 1)
rad = 30
Ellipse(pos = (touch.x - rad/2, touch.y - rad/2), size = (rad, rad))
touch.ud['line'] = Line(points = (touch.x, touch.y), width = 15)

def on_touch_move(self, touch):
touch.ud['line'].points += (touch.x, touch.y)

class PaintApp(App):
def build(self):
parent = Widget()
self.painter = PainterWidget()
parent.add_widget(self.painter)

parent.add_widget(Button(text = 'Clear' , on_press = self.clear_canvas, size = (100, 50)))
parent.add_widget(Button(text = 'Save' , on_press = self.save, size = (100, 50), pos = (100, 0)))
parent.add_widget(Button(text = 'Screen', on_press = self.screen, size = (100, 50), pos=(200, 0 )))
parent.add_widget(Button(text = 'red', on_press = self.red, size = (100, 50), pos=(300, 0 )))

return parent

def red(self, instance):

self.painter.Color(88, 7, 7)


def clear_canvas(self, instance):
self.painter.canvas.clear()

def save(self, instance):
self.painter.size = (Window.size[0], Window.size[1])
self.painter.export_to_png('mage.png')

def screen(self, instance):
Window.screenshot('screen.png')

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

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Код вставляйте с помощью ... -> код -> Python.
Текст ошибки тоже нужно писать сразу в вопросе, вот так:
Код:
AttributeError: 'PainterWidget' object has no attribute 'Color'
В ошибке написано что класс PainterWidget не имеет атрибута Color
Исправить можно путем добавления этого атрибута.
Вот пример:
Python:
class PainterWidget(Widget):
    color = (0.2, 0, 1, 1)

    def on_touch_down(self, touch):
        with self.canvas:
            Color(rgba=self.color)
            touch.ud["line"] = Line(points=(touch.x, touch.y), width=15)

    def on_touch_move(self, touch):
        touch.ud["line"].points += (touch.x, touch.y)
        
class PaintApp(App):
    ...
    def red(self, instance):
        self.painter.color = (1, 0, 0.2, 1)
 

Karina. 234567

Новичок
Пользователь
Окт 18, 2020
16
0
1
Код:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button

from random import random
from kivy.core.window import Window
from kivy.graphics import (Color, Ellipse, Rectangle, Line)



class PainterWidget(Widget):
    color = (0.2, 0, 1, 1)

    def on_touch_down(self, touch):
        with self.canvas:
            Color(rgba=self.color)
            touch.ud["line"] = Line(points=(touch.x, touch.y), width=15)

    def on_touch_move(self, touch):
        touch.ud["line"].points += (touch.x, touch.y)
    
class PaintApp(App):
    def build(self):
        parent = Widget()
        self.painter = PainterWidget()
        parent.add_widget(self.painter)

        parent.add_widget(Button(text = 'Clear' , on_press = self.clear_canvas, size = (100, 50)))
        parent.add_widget(Button(text = 'Save' , on_press = self.save, size = (100, 50), pos = (100, 0)))
        parent.add_widget(Button(text = 'Screen', on_press = self.screen, size = (100, 50), pos=(200, 0 )))

    def red(self, instance):
        self.painter.color = (1, 0, 0.2, 1)

        return parent
    
    def clear_canvas(self, instance):
        self.painter.canvas.clear()   

    def save(self, instance):
        self.painter.size = (Window.size[0], Window.size[1])
        self.painter.export_to_png('mage.png')

    def screen(self, instance):
        Window.screenshot('screen.png')
        
if __name__ == '__main__':
    PaintApp().run()
 

Karina. 234567

Новичок
Пользователь
Окт 18, 2020
16
0
1
Я учла свои ошибки, и он стал выдавать чёрный экран
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 625
469
83
на правую кнопку мыши появляются красные точки, их можно перемещать, а как должно работать?
 

Karina. 234567

Новичок
Пользователь
Окт 18, 2020
16
0
1
Нет у меня моя первоначальная программа имеет возможность рисовать кисью одного цвета, кнопку очищения экрана, и сохранение рисунка. А у меня не получается добавить кнопку чтоб при нажатии менялся цвет кисти, которой рисуешь.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Я учла свои ошибки, и он стал выдавать чёрный экран
Не стал писать в ответе вам полный код. Думал разберетесь.
Вот так нужно:
Python:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button

from random import random
from kivy.core.window import Window
from kivy.graphics import (Color, Ellipse, Rectangle, Line)


class PainterWidget(Widget):
    color = (0.2, 0, 1, 1)

    def on_touch_down(self, touch):
        with self.canvas:
            Color(rgba=self.color)
            touch.ud["line"] = Line(points=(touch.x, touch.y), width=15)

    def on_touch_move(self, touch):
        touch.ud["line"].points += (touch.x, touch.y)
    
class PaintApp(App):
    def build(self):
        parent = Widget()
        self.painter = PainterWidget()
        parent.add_widget(self.painter)

        parent.add_widget(Button(text = 'Clear' , on_press = self.clear_canvas, size = (100, 50)))
        parent.add_widget(Button(text = 'Save' , on_press = self.save, size = (100, 50), pos = (100, 0)))
        parent.add_widget(Button(text = 'Screen', on_press = self.screen, size = (100, 50), pos=(200, 0 )))
        parent.add_widget(Button(text = 'red', on_press = self.red, size = (100, 50), pos=(300, 0 )))
        
        return parent
    
    def red(self, instance):
        self.painter.color = (1, 0, 0.2, 1)
    
    def clear_canvas(self, instance):
        self.painter.canvas.clear()   

    def save(self, instance):
        self.painter.size = (Window.size[0], Window.size[1])
        self.painter.export_to_png('mage.png')

    def screen(self, instance):
        Window.screenshot('screen.png')
        
if __name__ == '__main__':
    PaintApp().run()
 
  • Мне нравится
Реакции: Karina. 234567

Karina. 234567

Новичок
Пользователь
Окт 18, 2020
16
0
1
Спасибо большое!!!!! Все получилось вы супер???????
 

Форум IT Специалистов