Ошибки в приложении
Вот код программы:`
import sqlite3
import tkinter as tk
from tkinter import ttk
class Main(tk.Frame):
def __init__(self, root):
super().__init__(root)
self.init_main()
def init_main(self):
toolbar = tk.Frame(self, bg="#d7d8e0", bd=10)
toolbar.pack(side=tk.TOP, fill=tk.X)
btn_open_dialog1 = tk.Button(toolbar, text="Заявка", command=lambda:self.open_dialog1(), bg="#d7d8e0", bd=0,
compound=tk.LEFT)
btn_open_dialog1.pack(side=tk.LEFT)
self.add_img = tk.PhotoImage(file="icons8-администратор-microsoft-50.png")
btn_open_dialog2 = tk.Button(toolbar, text="ЗаявкаГАИ", command=lambda:self.open_dialog2(), bg="#d7d8e0", bd=0,
compound=tk.LEFT)
btn_open_dialog2.pack(side=tk.LEFT)
self.add_img2 = tk.PhotoImage(file="icons8-администратор-microsoft-50.png")
btn_open_dialog3 = tk.Button(toolbar, text="Администратор", command=lambda: self.open_dialog3(), bg="#d7d8e0",
bd=0, compound=tk.LEFT)
btn_open_dialog3.pack(side=tk.LEFT)
def open_dialog2(self):
ZaiavkaGAI()
def open_dialog1(self):
Zaiavka()
def open_dialog3(self):
Admin()
class Sotrudniki(tk.Toplevel):
def __init__(self):
super().__init__(root)
self.init_Sotrudniki()
self.viev_records2() # сотрудники
def open_dialog8(self):
Dobavlenie_Sotrudnika()
def init_Sotrudniki(self):
self.title("Сотрудники")
self.geometry("600x420+400+300")
self.resizable(False, False)
db = DB()
self.db = db
toolbar2 = tk.Frame(self, bg='#d8d9e9', bd=0)
toolbar2.pack(side=tk.TOP, fill=tk.X)
self.add_img6 = tk.PhotoImage(file="siren_emergency_lights_hooter_police_icon_191334.png")
btn_open_dialog8 = tk.Button(toolbar2, text="Добавить сотрудника", command=lambda: self.open_dialog8(),
bg="#d7d8e0", bd=0,
compound=tk.LEFT)
btn_open_dialog8.pack(side=tk.LEFT)
self.grab_set()
self.focus_set()
self.tree = ttk.Treeview(self, columns=("ID", "FIO driver", "nomber ud", "nomber pass", "age jods", ), height=15,
show="headings")
self.tree.column("ID", width=20, anchor=tk.CENTER)
self.tree.column("FIO driver", width=150, anchor=tk.CENTER)
self.tree.column("nomber ud", width=150, anchor=tk.CENTER)
self.tree.column("nomber pass", width=120, anchor=tk.CENTER)
self.tree.column("age jods", width=170, anchor=tk.CENTER)
self.tree.heading("ID", text = "ID")
self.tree.heading("FIO driver", text="ФИО водителя эвак.")
self.tree.heading("nomber ud", text="Номер удостоверения")
self.tree.heading("nomber pass", text="Номер паспорта")
self.tree.heading("age jods", text="Трудовой стаж")
self.tree.pack()
def records2(self,FIO_driver,entry_nomber_ud,entry_nomber_pass,entry_entry_age_jobs):
self.db.insert_Protocol(FIO_driver,entry_nomber_ud,entry_nomber_pass,entry_entry_age_jobs)
self.viev_records2()
def viev_records2(self):
self.db.c.execute("""SELECT * FROM ivacuator""")
[self.tree.delete(i) for i in self.tree.get_children()]
[self.tree.insert("","end", values = row)for row in self.db.c.fetchall()]
class ZaiavkiADM(tk.Toplevel):
def __init__(self):
super().__init__(root)
self.init_ZaiavkiADM()
def init_ZaiavkiADM(self):
self.title("Заявления на эвакуацию")
self.geometry("797x420+400+300")
self.resizable(False, False)
db = DB()
self.db = db
self.viev_records3() # заявка
self.viev_records4() # заявкаГАИ
self.grab_set()
self.focus_set()
self.tree = ttk.Treeview(self, columns=("ID", "FIO driver", "nomber ud", "nomber pass", "nomber car","Data",
"Vid"),
height=15,show="headings")
self.tree.column("ID", width=25, anchor=tk.CENTER)
self.tree.column("FIO driver", width=120, anchor=tk.CENTER)
self.tree.column("nomber ud", width=135, anchor=tk.CENTER)
self.tree.column("nomber pass", width=120, anchor=tk.CENTER)
self.tree.column("nomber car", width=120, anchor=tk.CENTER)
self.tree.column("Data", width=150, anchor=tk.CENTER)
self.tree.column("Vid", width=150, anchor=tk.CENTER)
self.tree.heading("ID", text="ID")
self.tree.heading("FIO driver", text="ФИО водителя")
self.tree.heading("nomber ud", text="Номер удостоверения")
self.tree.heading("nomber pass", text="Номер паспорта")
self.tree.heading("nomber car", text="Номер машины")
self.tree.heading("Data", text="Дата подачи заявления")
self.tree.heading("Vid", text="Вид заявления")
self.tree.pack()
def records3(self,FIO_driver,entry_ud,entry_pass,entry_nomder_car):
self.db.insert_Zaiavki(FIO_driver,entry_ud,entry_pass,entry_nomder_car)
def records4(self,FIO_driver,entry_ud,entry_pass,entry_nomder_car):
self.db.insert_Zaiavki(FIO_driver,entry_ud,entry_pass,entry_nomder_car)
def viev_records3(self):
self.db.b.execute("""SELECT * FROM ivacuator""")
[self.tree.delete(i) for i in self.tree.get_children()]
[self.tree.insert("","end", values = row)for row in self.db.b.fetchall()]
def viev_records4(self):
self.db.b.execute("""SELECT * FROM ivacuator""")
[self.tree.delete(i) for i in self.tree.get_children()]
[self.tree.insert("","end", values = row)for row in self.db.b.fetchall()]
class Protocol(tk.Toplevel):
def __init__(self):
super().__init__()
self.init_Protocol()
self.viev_records1() # протокол
def open_dialog7(self):
Dobavlenie_Protocol()
def init_Protocol(self):
self.title("Протокол")
self.geometry("900x420+400+300")
self.resizable(True, True)
db = DB()
self.db = db
'''self.entry_description = ttk.Entry(self)
self.entry_description.place(x=400, y=50)''' "Добавление записи"
self.grab_set()
self.focus_set()
toolbar2 = tk.Frame(self, bg='#d8d9e9', bd=0)
toolbar2.pack(side=tk.TOP, fill=tk.X)
self.add_img6 = tk.PhotoImage(file="siren_emergency_lights_hooter_police_icon_191334.png")
btn_open_dialog7 = tk.Button(toolbar2, text="Заполнить протокол эвакуации", command=lambda: self.open_dialog7(),
bg="#d7d8e0", bd=0,
compound=tk.LEFT)
btn_open_dialog7.pack(side=tk.LEFT)
self.tree = ttk.Treeview(self, columns =("ID", "nomber car arrest", "FIO driver", "nomber car","adress arest",
"adres stop", "Data arrest"), height = 15,
show="headings")
self.tree.column("ID", width=20, anchor=tk.CENTER)
self.tree.column("nomber car arrest", width=150, anchor=tk.CENTER)
self.tree.column("FIO driver", width=150, anchor=tk.CENTER)
self.tree.column("nomber car", width=120, anchor=tk.CENTER)
self.tree.column("adress arest", width=170, anchor=tk.CENTER)
self.tree.column("adres stop", width=170, anchor=tk.CENTER)
self.tree.column("Data arrest", width=150, anchor=tk.CENTER)
self.tree.heading("ID", text = "ID")
self.tree.heading("nomber car arrest", text="Номер эвак. машины")
self.tree.heading("FIO driver", text="ФИО водителя")
self.tree.heading("nomber car", text="Номер эвакуатора")
self.tree.heading("adress arest", text="Место эвакуации")
self.tree.heading("adres stop", text="Место доставки")
self.tree.heading("Data arrest", text="Дата эвакуации")
self.tree.pack()
def records1(self,nomber_car_driver,entry_FIO,entry_nomber_car_arrest,entry_adress_arest,entry_jail_adress):
self.db.insert_Protocol(nomber_car_driver,entry_FIO,entry_nomber_car_arrest,entry_adress_arest,entry_jail_adress)
def viev_records1(self):
self.db.v.execute("""SELECT * FROM ivacuator""")
[self.tree.delete(i) for i in self.tree.get_children()]
[self.tree.insert("","end", values = row)for row in self.db.v.fetchall()]
class ZaiavkaGAI(tk.Toplevel):
def __init__(self):
super().__init__(root)
self.init_ZaiavkaGAI()
def init_ZaiavkaGAI(self):
self.title("Заполнить заявку ГАИ")
self.geometry("400x320+400+300")
self.resizable(False, False)
self.view = app
label1 = tk.Label(self,text="Сотрудник ГАИ", fg="#eee", bg="#333")
label1.pack()
label_FIO_driver = tk.Label(self, text = "ФИО водителя")
label_FIO_driver.place(x=80, y=30)
label_entry_ud = tk.Label(self, text = "Номер удостоверения")
label_entry_ud.place(x=60, y=60)
label_entry_pass = tk.Label(self, text = "Номер паспорта")
label_entry_pass.place(x=80, y=90)
label_entry_nomder_car = tk.Label(self, text = "Номер машины")
label_entry_nomder_car.place(x=80, y=120)
self.entry_FIO_driver = ttk.Entry(self)
self.entry_FIO_driver.place(x=190, y=30)
self.entry_ud = ttk.Entry(self)
self.entry_ud.place(x=190, y=60)
self.entry_pass = ttk.Entry(self)
self.entry_pass.place(x=190, y=90)
self.entry_nomder_car = ttk.Entry(self)
self.entry_nomder_car.place(x=190, y=120)
btn_cansel = ttk.Button(self, text="Закрыть", command=self.destroy)
btn_cansel.place(x=240, y=250)
btn_add = ttk.Button(self, text="Добавить")
btn_add.place(x=70, y=250)
btn_add.bind("<button-1>", lambda event: self.view.records3(self.FIO_driver,self.entry_ud,self.entry_pass,
self.entry_nomder_car))
self.grab_set()
self.focus_set()
class Admin(tk.Toplevel):
def __init__(self):
super().__init__()
self.init_Admin()
def open_dialog4(self):
Protocol()
def open_dialog5(self):
Sotrudniki()
def open_dialog6(self):
ZaiavkiADM()
def init_Admin(self):
toolbar1 = tk.Frame(self, bg='#d8d9e9', bd=0)
toolbar1.pack(side=tk.TOP, fill=tk.X)
self.add_img3 = tk.PhotoImage(file="siren_emergency_lights_hooter_police_icon_191334.png")
btn_open_dialog4 = tk.Button(toolbar1, text="Протокол эвакуации", command=lambda: self.open_dialog4(), bg="#d7d8e0", bd=0,
compound=tk.LEFT)
btn_open_dialog4.pack(side=tk.TOP)
self.add_img4 = tk.PhotoImage(file="siren_emergency_lights_hooter_police_icon_191334.png")
btn_open_dialog5 = tk.Button(toolbar1, text="Сотрудники", command=lambda: self.open_dialog5(), bg="#d7d8e0", bd=0,
compound=tk.LEFT)
btn_open_dialog5.pack(side=tk.TOP)
self.add_img5 = tk.PhotoImage(file="siren_emergency_lights_hooter_police_icon_191334.png")
btn_open_dialog6 = tk.Button(toolbar1, text="Заявления на эвакуацию", command=lambda: self.open_dialog6(),
bg="#d7d8e0", bd=0,
compound=tk.LEFT)
btn_open_dialog6.pack(side=tk.TOP)
class Zaiavka(tk.Toplevel):
def __init__(self):
super().__init__()
self.init_Zaiavka()
def init_Zaiavka(self):
self.title("Заполнить заявку")
self.geometry("400x320+400+300")
self.resizable(False, False)
self.view = app
label1 = tk.Label(self,text="Частное лицо", fg="#eee", bg="#333")
label1.pack()
label_FIO_driver = tk.Label(self, text="ФИО водителя")
label_FIO_driver.place(x=80, y=30)
label_entry_ud = tk.Label(self, text="Номер удостоверения")
label_entry_ud.place(x=50, y=60)
label_entry_pass = tk.Label(self, text="Номер паспорта")
label_entry_pass.place(x=80, y=90)
label_entry_nomder_car = tk.Label(self, text="Номер машины")
label_entry_nomder_car.place(x=80, y=120)
self.FIO_driver = ttk.Entry(self)
self.FIO_driver.place(x=180, y=30)
self.entry_ud = ttk.Entry(self)
self.entry_ud.place(x=180, y=60)
self.entry_pass = ttk.Entry(self)
self.entry_pass.place(x=180, y=90)
self.entry_nomder_car = ttk.Entry(self)
self.entry_nomder_car.place(x=180, y=120)
self.grab_set()
self.focus_set()
btn_cansel = ttk.Button(self, text = "Закрыть", command =self.destroy)
btn_cansel.place(x=240, y=250)
btn_add = ttk.Button(self, text="Добавить")
btn_add.place(x=70, y=250)
btn_add.bind("<button-1>", lambda event: self.view.records4(self.entry_FIO_driver,self.entry_ud,self.entry_pass,
self.entry_nomder_car))
class Dobavlenie_Protocol(tk.Toplevel):
def __init__(self):
super().__init__()
self.init_Dobavlenie_Protocol()
def init_Dobavlenie_Protocol(self):
self.title("Заполнить протокол")
self.geometry("400x320+400+300")
self.resizable(False, False)
self.view = app
label_nomber_car_driver = tk.Label(self, text="Номер машины")
label_nomber_car_driver.place(x=80, y=30)
label_entry_FIO = tk.Label(self, text="ФИО водителя")
label_entry_FIO.place(x=80, y=60)
label_entry_nomber_car_arrest = tk.Label(self, text="Номер эвак. машины")
label_entry_nomber_car_arrest.place(x=55, y=90)
label_entry_adress_arest = tk.Label(self, text="Место эвакуации")
label_entry_adress_arest.place(x=80, y=120)
label_entry_jail_adress = tk.Label(self, text="Место доставки")
label_entry_jail_adress.place(x=80, y=150)
label_entry_Data = tk.Label(self, text="Дата эвакуации")
label_entry_Data.place(x=80, y=180)
self.entry_nomber_car_driver = ttk.Entry(self)
self.entry_nomber_car_driver.place(x=180, y=30)
self.entry_FIO = ttk.Entry(self)
self.entry_FIO.place(x=180, y=60)
self.entry_nomber_car_arrest = ttk.Entry(self)
self.entry_nomber_car_arrest.place(x=180, y=90)
self.entry_adress_arest = ttk.Entry(self)
self.entry_adress_arest.place(x=180, y=120)
self.entry_jail_adress = ttk.Entry(self)
self.entry_jail_adress.place(x=180, y=150)
self.entry_Data = ttk.Entry(self)
self.entry_Data.place(x=180, y=180)
btn_cansel = ttk.Button(self, text="Закрыть", command=self.destroy)
btn_cansel.place(x=240, y=250)
btn_add = ttk.Button(self, text="Добавить")
btn_add.place(x=70, y=250)
btn_add.bind("<button-1>",lambda event: self.view.records1(self.entry_nomber_car_driver,self.entry_FIO,
self.entry_nomber_car_arrest,self.entry_adress_arest,
self.entry_jail_adress,self.entry_Data))
self.grab_set()
self.focus_set()
class Dobavlenie_Sotrudnika(tk.Toplevel):
def __init__(self):
super().__init__()
self.init_Dobavlenie_Sotrudnika()
def init_Dobavlenie_Sotrudnika(self):
self.title("Добавить сотрудника")
self.geometry("400x320+400+300")
self.resizable(False, False)
self.view = app
label_FIO_driver = tk.Label(self, text="ФИО сотрудника")
label_FIO_driver.place(x=80, y=30)
label_entry_nomber_ud = tk.Label(self, text="Номер удостоверения")
label_entry_nomber_ud.place(x=50, y=60)
label_entry_nomber_pass = tk.Label(self, text="Номер паспорта")
label_entry_nomber_pass.place(x=80, y=90)
label_entry_age_jobs = tk.Label(self, text="Трудовой стаж")
label_entry_age_jobs.place(x=90, y=120)
self.FIO_driver = ttk.Entry(self)
self.FIO_driver.place(x=180, y=30)
self.entry_nomber_ud = ttk.Entry(self)
self.entry_nomber_ud.place(x=180, y=60)
self.entry_nomber_pass = ttk.Entry(self)
self.entry_nomber_pass.place(x=180, y=90)
self.entry_entry_age_jobs = ttk.Entry(self)
self.entry_entry_age_jobs.place(x=180, y=120)
btn_cansel = ttk.Button(self, text="Закрыть", command=self.destroy)
btn_cansel.place(x=240, y=250)
btn_add = ttk.Button(self, text="Добавить")
btn_add.place(x=70, y=250)
btn_add.bind("<button-1>", lambda event: self.view.records1(self.FIO_driver,self.entry_nomber_ud,
self.entry_nomber_pass,
self.entry_entry_age_jobs))
self.grab_set()
self.focus_set()
class DB:
def __init__(self):
self.conn = sqlite3.connect("ivacuator.db")
self.c = self.conn.cursor()
self.c.execute(
"""CREATE TABLE IF NOT EXISTS Sotrudniki (id integer primary key,FIO_driver text,entry_nomber_ud blob,
entry_nomber_pass blob,entry_entry_age_jobs integer)""")
self.conn.commit()
self.v = self.conn.cursor()
self.v.execute(
"""CREATE TABLE IF NOT EXISTS Protocol (id integer primary key,entry_FIO text,
entry_nomber_car_arrest blob,entry_adress_arest blob, entry_jail_adress blob,)""")
self.conn.commit()
self.b = self.conn.cursor()
self.b.execute(
"""CREATE TABLE IF NOT EXISTS Zaiavki (id integer primary key,FIO_driver text,entry_ud blob,
entry_pass blob, entry_nomder_car blob)""")
self.conn.commit()
def insert_Protocol(self,nomber_car_driver,entry_FIO,entry_nomber_car_arrest,entry_adress_arest,entry_jail_adress):
self.v.execute("""INSERT INTO ivacuator(nomber_car_driver,entry_FIO,entry_nomber_car_arrest,entry_adress_arest
entry_jail_adress) VALUES (?,?,?,?,?)""",(nomber_car_driver,entry_FIO,entry_nomber_car_arrest,
entry_adress_arest,entry_jail_adress))
self.conn.commit()
def insert_Sotrudniki(self,FIO_driver,entry_nomber_ud,entry_nomber_pass,entry_entry_age_jobs):
self.c.execute("""INSERT INTO ivacuator(FIO_driver,entry_nomber_ud,entry_nomber_pass,entry_entry_age_jobs)VALUES(?,?,?,?)""",
(FIO_driver,entry_nomber_ud,entry_nomber_pass,entry_entry_age_jobs))
self.conn.commit()
def insert_Zaiavki(self,FIO_driver,entry_ud,entry_pass,entry_nomder_car):
self.b.execute("""INSERT INTO ivacuator(FIO_driver,entry_ud,entry_pass,entry_nomder_car)VALUES(?,?,?,?)""",
(FIO_driver,entry_ud,entry_pass,entry_nomder_car))
self.conn.commit()
if __name__ == "__main__":
root = tk.Tk()
app = Main(root)
app.pack(side=tk.TOP, fill=tk.X)
root.title("Эвакуаторное агенство")
root.geometry("450x250+100+200")
root.resizable(False, False)
root.mainloop()
Я не понимаю как исправить данные ошибки в консоли мне нужно что бы работала функция добавления,если есть какие либо вопросы то спрашивайте,надеюсь вы поможете мне справиться Выводимые сообщения консоли при запуске окна Заявка:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\XX10\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1885, in __call__
return self.func(*args)
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 17, in <lambda>
btn_open_dialog1 = tk.Button(toolbar, text="Заявка", command=lambda:self.open_dialog1(), bg="#d7d8e0", bd=0,
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 35, in open_dialog1
Zaiavka()
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 274, in __init__
self.init_Zaiavka()
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 318, in init_Zaiavka
btn_add.bind("<button-1>", lambda event: self.view.records4(self.entry_FIO_driver,self.entry_ud,self.entry_pass,
File "C:\Users\XX10\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1385, in bind
return self._bind(('bind', self._w), sequence, func, add)
File "C:\Users\XX10\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1339, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "button"
ЗаявкаГАИ:`
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\XX10\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1885, in __call__
return self.func(*args)
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 22, in <lambda>
btn_open_dialog2 = tk.Button(toolbar, text="ЗаявкаГАИ", command=lambda:self.open_dialog2(), bg="#d7d8e0", bd=0,
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 32, in open_dialog2
ZaiavkaGAI()
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 188, in __init__
self.init_ZaiavkaGAI()
File "C:\Users\XX10\PycharmProjects\TRPO\Main.py", line 230, in init_ZaiavkaGAI
btn_add.bind("<button-1>", lambda event: self.view.records3(self.FIO_driver,self.entry_ud,self.entry_pass,
File "C:\Users\XX10\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1385, in bind
return self._bind(('bind', self._w), sequence, func, add)
File "C:\Users\XX10\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1339, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "button"
`
Далее пример консоли скинуть не могу места не хватает,скопируйте код и посмотрите на ошибки в консоли. Пример рабочей программы:
import tkinter as tk
from tkinter import ttk
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'), height=15, show='headings')
self.tree.column('ID', width=30, anchor=tk.CENTER)
self.tree.column('description', width=365, anchor=tk.CENTER)
self.tree.column('costs', width=150, anchor=tk.CENTER)
self.tree.column('total', width=100, 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.pack()
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 text, 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()