Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 09.03.2019
Сообщений: 1
1

Вычесление из базы данных

09.03.2019, 18:23. Показов 1783. Ответов 0

Author24 — интернет-сервис помощи студентам
Доброго времени суток уважаемые форумчане, я новичок в программировании, наткнулся на 2 большые проблеммы. Надеюсь кто-то сможет мне помочь в этом, так как рылся в интернетах и не нашёл решения проблеммы.
И так у меня есть программа которая вносит в базу данных количество денег(доходы/расходы), нужно сделать так что бы при записывании новых данных в базу данных, в колоне 'check_btns', появлялись Check buttons, которые будут принимать значение из 'costs', которые в свою очередь можно будет суммировать при нажатии кнопки self.btn_sum_money и выводить на self.entry_sum_money. Я уже пробывал разные способы типа sum(int('costs')) - не работают. Помогите пожалуйста разобраться с этим=) Вот код и файл add.gif прикреплён к теме)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import tkinter as tk
from tkinter import ttk
import tkinter.messagebox
import sqlite3
 
 
class Main(tk.Frame):
 
 
    def __init__(self, root):
        super().__init__(root)
        self.init_main()
        self.db = db
        self.view_records()
 
    def init_main(self):
        toolbar = tk.Frame(bg='#d7d8e0', bd=2)
        toolbar.pack(side=tk.TOP, fill=tk.X)
        
        self.add_img=tk.PhotoImage(file='add.gif')
        btn_open_dialog=tk.Button(toolbar, text='Добавить позицию', command=self.open_dialog, bg='#d7d8e0', bd=0,
            compound=tk.TOP, image=self.add_img)
 
        btn_open_dialog.pack(side=tk.LEFT)
 
        self.tree = ttk.Treeview(self, columns=('ID', 'description', 'costs', 'total', 'check_btns'), height=15, show='headings')
        self.tree.column('ID', width=30, anchor=tk.CENTER)
        self.tree.column('description', width=335, anchor=tk.CENTER)
        self.tree.column('costs', width=150, anchor=tk.CENTER)
        self.tree.column('total', width=100, anchor=tk.CENTER)
        self.tree.column('check_btns', width=30, anchor=tk.CENTER)
 
        self.tree.heading('ID', text='ID')
        self.tree.heading('description', text='Наименование')
        self.tree.heading('costs', text='Статья дохода/расхода')
        self.tree.heading('total', text='Сумма')
        self.tree.heading('check_btns', text='ok')
 
 
        self.tree.pack()
 
        self.entry_sum_money=ttk.Entry(self)
        self.entry_sum_money.place(x=480, y=300)
        self.btn_sum_money=ttk.Button(self, text='Подсчитать')
        self.btn_sum_money.place(x=400, y=300)
 
 
    def records(self, description, costs, total):
        self.db.insert_data(description, costs, total)
        self.view_records()
 
    def view_records(self):
        self.db.c.execute('''SELECT * FROM finance''')
        [self.tree.delete(i) for i in self.tree.get_children()]
        [self.tree.insert('','end', values = row) for row in self.db.c.fetchall()]
 
    
    def open_dialog(self):
        Child()
 
 
class Child(tk.Toplevel):
    def __init__(self):
        super().__init__(root)
        self.init_child()
        self.view = app
        
 
    def init_child(self):
        self.title('Добавить доходы/расходы')
        self.geometry('400x220+400+300')
        self.resizable(False, False)
 
        label_description = tk.Label(self, text='Наименование')
        label_description.place(x=50, y=50)
 
        label_select = tk.Label(self, text='Статья дохода/расхода')
        label_select.place(x=50, y=80)
 
        label_sum= tk.Label(self, text='Сумма:')
        label_sum.place(x=50, y=110)
 
        self.entry_description = ttk.Entry(self)
        self.entry_description.place(x=200, y=50)
 
        self.entry_money = ttk.Entry(self)
        self.entry_money.place(x=200, y=110)
 
        self.combobox = ttk.Combobox(self, values=[u'Доход', u'Расход'])
        self.combobox.current(0)
        self.combobox.place(x=200, y=80)
 
        btn_cancel = ttk.Button(self, text = 'Закрыть', command=self.destroy)
        btn_cancel.place(x=300, y=170)
 
        btn_ok = ttk.Button(self, text='Добавить')
        btn_ok.place(x=220, y=170)
        btn_ok.bind('<Button-1>', lambda event: self.view.records(
            self.entry_description.get(), 
            self.entry_money.get(), 
            self.combobox.get()))
 
 
        self.grab_set()
        self.focus_set()
 
class DB:
        def __init__(self):
            self.conn=sqlite3.connect('finance.db')
            self.c = self.conn.cursor()
            self.c.execute('''CREATE TABLE IF NOT EXISTS finance(ID integer primary key, description text, costs int, total real)''')
            self.conn.commit()
 
        def insert_data(self, description, costs, total):
            self.c.execute('''INSERT INTO finance(description, costs, total) VALUES (?, ?, ?)''',
                (description, costs, total))
            self.conn.commit()
 
 
if __name__ == "__main__":
    root = tk.Tk()
    db = DB()
    app = Main(root)
    app.pack()
    root.title("Household finance")
    root.geometry("650x450+300+200")
    root.resizable(False, False)
    root.mainloop()
Изображения
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2019, 18:23
Ответы с готовыми решениями:

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s.
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table, а вот сам...

При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных (8961)
При открытии базы данных FoxPro в приложение Delphi возникает ошибка драйвера внешней базы данных...

Восстановить поврежденный файл базы данных SQLite (сделать дамп запароленного файла базы данных)
Вообщем не понятно после чего перестал открываться файл базы данных с ошибкой - &quot;database disk...

Выбрать источник базы данных, а именно файл базы данных Microsoft SQL Server
мне по заданию в универе нужно выбрать источник базы данных в визуал студио .NET, а именно файл...

0
09.03.2019, 18:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2019, 18:23
Помогаю со студенческими работами здесь

Создание базы данных, открытие из под одной базы данных MS Access
Здравствуйте. В общем, C# начал заниматься только вот и сразу была поставлена задача создать базу...

Как узнать имя базы данных и сервер базы данных?
База данных находится на локальной машине

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
В таблицу DicFactor вводятся факторы, а в связанную с ней таблицу FactorValue вводятся допустимые...

Как сравнить переменную со строкой базы данных или как присвоить переменной значение строки базы данных ?
подскажите пожалуйста как мне сравнить переменную типа string с каким нибудь строкой базы данных....

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
Есть 2 таблицы справочников (все факторы и все возможные значения - tblDicFactor и...

Имя базы данных, пользователь базы данных
При создании базы данных к имени базы и к имени пользователя автоматом добавляется имя аккаунта....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru