Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 24, 2020 12:35:29

Yaroslam322
Зарегистрирован: 2020-02-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как нарисовать объект на Canvvas по данным из базы данных

Есть приложение учета финансов, которое визуализирует расходы в виде круговой диаграммы. Данные для диаграммы берутся из бд. Надо нарисовать саму диаграмму.

Для этого я использую следующую функцию в классе main

 def view_records(self):
summ = self.db.c.execute('''SELECT SUM(costs) FROM finance''')
money_mass = self.db.c.execute('''SELECT costs FROM finance''')
money_mass.fetchall()
end = 0
for i in money_mass:
self.stats_field.create_arc(start=end, extend=3.6*(i//summ * 100), fill = "black")
end += 3.6*(i//summ * 100)

Но ничего не отрисовывается. Вопрос, как сделать это правильно?

файл программы прилагается https://github.com/Yaroslam/GUI_app/blob/master/main.py






Отредактировано Yaroslam322 (Фев. 24, 2020 23:29:32)

Офлайн

#2 Фев. 24, 2020 13:57:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как нарисовать объект на Canvvas по данным из базы данных

Yaroslam322
файл программы прилагается
где?



Офлайн

#3 Фев. 24, 2020 23:30:04

Yaroslam322
Зарегистрирован: 2020-02-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как нарисовать объект на Canvvas по данным из базы данных

FishHook
отредачил

Офлайн

#4 Фев. 25, 2020 08:58:00

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Как нарисовать объект на Canvvas по данным из базы данных

В начале кода под блоком импортов вставляете список цветов для диаграммы:

 COLORS = ('black', 'blue', 'green', 'grey', 'purple', 'orange', 'maroon', 'gold')  #если не хватит, добавить цветов

Функция:
     def view_records(self):
        summ = self.db.c.execute('''SELECT SUM(costs) FROM finance''').fetchone()
        money_mass = self.db.c.execute('''SELECT costs FROM finance''').fetchall()
        end = 0
        for i,m in enumerate(money_mass):
            ext = 360 * m[0] / summ[0]
            self.stats_field.create_arc(20, 20, 200, 200, start=end, extent=ext, fill=COLORS[i])
            end += ext

Офлайн

#5 Фев. 25, 2020 21:34:36

Yaroslam322
Зарегистрирован: 2020-02-24
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как нарисовать объект на Canvvas по данным из базы данных

rami
В начале кода под блоком импортов вставляете список цветов для диаграммы:
Спасибо, все работает

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version