Здравствуйте, нужна помощь. Изучаю Python и решил написать небольшую программу, чтобы немного разобраться во всем.
Идея такая, программа должна выполнять три функции:
- Получать данные от пользователя и вносить их в файл.
- При запросе пользователя прочитать файл и вывести данные в табличном виде.
- Удалить ненужные данные (ошибка или потеря актуальности).
Изначально попробовал написать чисто консольный скрипт, теперь хочу добавить немного "красивостей". Использую для этого Tkinter.
На данном этапе готова функция с получением данных и записью в файл. Также есть функция прочтения и вывода в табличной форме (только в консоли, пока не придумал как их вывести в окно программы). Сейчас это весь готовый функционал.
Проблема заключается в следующем: пользователь вводит данные, нажимает кнопку, всё отлично записывается и выскакивает уведомление, дальше нужно очистить поля и ждать следующего действия пользователя.
Почитал про то, как можно очистить поле ввода, перепробовал несколько вариантов, но не один не сработал. Кто может подсказать как это исправить?
Если будут какие-то замечания по коду, пишите в комментариях.
from tkinter import *
from tkinter import messagebox
import pandas as pd
import os
def clear ():
NameUserEntry.delete("0", END)
NumbersEntry.delete("0", END)
CarEntry.delete("0", END)
VolumeSEntry.delete("0", END)
PriceSEntry.delete("0", END)
VolumeFEntry.delete("0", END)
PriceFEntry.delete("0", END)
ExpensesEntry.delete("0", END)
def data_user():
os.system('CLS')
print("Получение данных....", end="")
name_driver = NameUserEntry.get()
number_driver = NumbersEntry.get()
car_driver = CarEntry.get()
volume_start = int(VolumeSEntry.get())
price_start = int(PriceSEntry.get())
volume_finish = int(VolumeFEntry.get())
price_finish = int(PriceFEntry.get())
expenses = int(ExpensesEntry.get())
profit = volume_finish * price_finish - volume_start * price_start - expenses
print('Ок')
os.system('CLS')
print("Формируется словарь....", end="")
data_driver = {
'name':name_driver,
'numbers':number_driver,
'car':car_driver,
'Vs':volume_start,
'Ps':price_start,
'Vf':volume_finish,
'Pf':price_finish,
'Ex':expenses,
'Prof':profit,
}
print("Ок")
print("Собираем фрейм...", end="")
columns = ['ФИО', 'Телефон', 'Машина', 'Объем на старте', 'Цена покупки',
'Объем на выходе', 'Цена продажи', 'Затраты', 'Профит',]
data = [[data_driver['name'],
data_driver['numbers'],
data_driver['car'],
data_driver['Vs'],
data_driver['Ps'],
data_driver['Vf'],
data_driver['Pf'],
data_driver['Ex'],
data_driver['Prof']
]]
df = pd.DataFrame(data, columns=columns)
print('Ок')
print('Делаем запись....', end='')
df.to_csv(r'data.csv', mode='a', sep='/',
header=False, index=False, encoding='utf-8')
print('Ок')
positive = 'Запись успешно добалена!'
messagebox.showinfo('Уведомление', positive)
def read_data():
df =pd.read_csv(r'data.csv', sep='/', names = ['ФИО',
'Телефон', 'Машина', 'Объем на старте', 'Цена покупки',
'Объем на выходе', 'Цена продажи', 'Затраты', 'Профит'])
print(df)
root = Tk()
root.title('F1')
root.geometry('500x600')
button_padding = {'ipadx':5, 'ipady':5}
header_padding = {'padx':10, 'pady':12}
#ФИО водителя
NameUserLabel = Label(root, text='ФИО водителя: ', **header_padding)
NameUserLabel.grid(row = 1, rowspan=1, column=1, sticky='w')
NameUserEntry = Entry(root, bg='#fff', fg='#444')
NameUserEntry.grid(row = 2, rowspan=1, column=1,sticky='w')
#Номер телефона
NumbersLabel = Label(root, text='Номер телефона: ')
NumbersLabel.grid(row = 1, rowspan=1, column=3, sticky='w')
NumbersEntry = Entry(root, bg='#fff', fg='#444')
NumbersEntry.grid(row = 2, rowspan=1, column=3,sticky='w')
#марка машины, номер
CarLabel = Label(root, text='Машина(марка,г.с.з.: ', **header_padding)
CarLabel.grid(row = 3, rowspan=1, column=1, sticky='w')
CarEntry = Entry(root, bg='#fff', fg='#444')
CarEntry.grid(row = 4, rowspan=1, column=1,sticky='w')
#объем при покупке
VolumeSLabel = Label(root, text='Объем (покупка): ', **header_padding)
VolumeSLabel.grid(row = 6, rowspan=1, column=1, sticky='w')
VolumeSEntry = Entry(root, bg='#fff', fg='#444')
VolumeSEntry.grid(row = 7, rowspan=1, column=1,sticky='w')
#цена покупки
PriceSLabel = Label(root, text='Цена (покупка): ')
PriceSLabel.grid(row = 6, rowspan=1, column=3, sticky='w')
PriceSEntry = Entry(root, bg='#fff', fg='#444')
PriceSEntry.grid(row = 7, rowspan=1, column=3,sticky='w')
#объем при продаже
VolumeFLabel = Label(root, text='Объем (продажа): ', **header_padding)
VolumeFLabel.grid(row = 9, rowspan=1, column=1, sticky='w')
VolumeFEntry = Entry(root, bg='#fff', fg='#444')
VolumeFEntry.grid(row = 10, rowspan=1, column=1,sticky='w')
#цена при продаже
PriceFLabel = Label(root, text='Цена (продажа): ')
PriceFLabel.grid(row = 9, rowspan=1, column=3, sticky='w',)
PriceFEntry = Entry(root, bg='#fff', fg='#444')
PriceFEntry.grid(row = 10, rowspan=1, column=3,sticky='w')
#прочие затраты
ExpensesLabel = Label(root, text='Прочие затраты: ', **header_padding)
ExpensesLabel.grid(row = 12, rowspan=1, column=1, sticky='w')
ExpensesEntry = Entry(root, bg='#fff', fg='#444', )
ExpensesEntry.grid(row = 13, rowspan=1, column=1,sticky='w')
#профит, высчитывается и вносится в таблицу
# кнопка сделать запись
ButtonWrite = Button(root, text='Сделать запись', bg='#fff', fg='#444')
ButtonWrite.grid(row = 15, rowspan=1, column=1, sticky='ws')
ButtonWrite.config(command=data_user)
# кнопка очистки данных
ButtonDelete = Button(root, text='очистить данные', bg='#fff', fg='#444')
ButtonDelete.grid(row = 15, rowspan=1, column=3, sticky='w')
ButtonDelete.config(command=clear)
root.mainloop()