Python 3
Fix the code so the user can not select a day after than today's date and it show a warning "Select a correct date"
Code:
import tkinter as tk from tkcalendar import DateEntry from openpyxl import load_workbook from tkinter import messagebox from datetime import datetime window = tk.Tk() window.title("daily logs") window.grid_columnconfigure(1,weight=1) window.grid_rowconfigure(1,weight=1) # labels tk.Label(window, text="Bar code").grid(row=0, sticky="W", pady=20, padx=20) tk.Label(window, text="Products failed").grid(row=1, sticky="W", pady=20, padx=20) tk.Label(window, text="Money Lost").grid(row=2, sticky="W", pady=20, padx=20) tk.Label(window, text="sold by").grid(row=3, sticky="W", pady=20, padx=20) tk.Label(window, text="Failed date").grid(row=4, sticky="W", pady=20, padx=20) tk.Label(window, text="Working product").grid(row=5, sticky="W", pady=20, padx=20) #Working product label # entries barcode = tk.Entry(window) product = tk.Entry(window) money = tk.Entry(window) # arraging barcode.grid(row=0, column=1) product.grid(row=1, column=1) money.grid(row=2, column=1) options = tk.StringVar(window) options.set("Choose one value") # default value soldData = tk.OptionMenu(window, options, "Peter", "John", "Mary", "Jonatan", "Steve") soldData.grid(row=3, column=1) cal = DateEntry(window, width=12, background='darkblue', foreground='white', borderwidth=2) cal.grid(row=4, column=1) #option menu for working product Yes/No optionsWorkingProduct = tk.StringVar(window) optionsWorkingProduct.set("Choose working product") # default value workingProduct = tk.OptionMenu(window, optionsWorkingProduct, "Yes", "No") workingProduct.grid(row=5, column=1) barcode_ls=[] def readValue(): excel_barcode = barcode.get() excel_product = product.get() excel_money = money.get() excel_sold = options.get() excel_workingProduct= optionsWorkingProduct.get() if excel_sold.strip() == 'Choose one value': messagebox.showwarning("Error", "Please select a value for sold by") return if excel_workingProduct.strip() == 'Choose working product': #check for the not selected working product messagebox.showwarning("Error", "Please select a value for working product") return date = datetime.now() print(date) data = [excel_barcode, excel_product, excel_money, excel_sold, date, excel_workingProduct] workbook = load_workbook("dailylog.xlsx") worksheet = workbook.worksheets[0] worksheet.append(data) workbook.save("dailylog.xlsx") cleardate() def cleardate(): barcode.delete(0, 'end') product.delete(0, 'end') money.delete(0, 'end') options.set("Choose one value") # default value optionsWorkingProduct.set("Choose working product") # default value set to the working product today = datetime.now() cal.set_date(today) # button to trigger actions button = tk.Button(text="SUBMIT", command=readValue).grid(row=6, pady=20, padx=20) button = tk.Button(text="CLEAR", command=cleardate).grid(row=6, column=1, pady=20, padx=20) window.geometry("500x500") window.mainloop()
import tkinter as tk from tkcalendar import DateEntry from openpyxl import load_workbook from tkinter import messagebox from datetime import datetime window = tk.Tk() window.title("daily logs") window.grid_columnconfigure(1,weight=1) window.grid_rowconfigure(1,weight=1) # labels tk.Label(window, text="Bar code").grid(row=0, sticky="W", pady=20, padx=20) tk.Label(window, text="Products failed").grid(row=1, sticky="W", pady=20, padx=20) tk.Label(window, text="Money Lost").grid(row=2, sticky="W", pady=20, padx=20) tk.Label(window, text="sold by").grid(row=3, sticky="W", pady=20, padx=20) tk.Label(window, text="Failed date").grid(row=4, sticky="W", pady=20, padx=20) tk.Label(window, text="Working product").grid(row=5, sticky="W", pady=20, padx=20) #Working product label # entries barcode = tk.Entry(window) product = tk.Entry(window) money = tk.Entry(window) # arraging barcode.grid(row=0, column=1) product.grid(row=1, column=1) money.grid(row=2, column=1) options = tk.StringVar(window) options.set("Choose one value") # default value soldData = tk.OptionMenu(window, options, "Peter", "John", "Mary", "Jonatan", "Steve") soldData.grid(row=3, column=1) cal = DateEntry(window, width=12, background='darkblue', foreground='white', borderwidth=2) cal.grid(row=4, column=1) #option menu for working product Yes/No optionsWorkingProduct = tk.StringVar(window) optionsWorkingProduct.set("Choose working product") # default value workingProduct = tk.OptionMenu(window, optionsWorkingProduct, "Yes", "No") workingProduct.grid(row=5, column=1) barcode_ls=[] def readValue(): excel_barcode = barcode.get() excel_product = product.get() excel_money = money.get() excel_sold = options.get() excel_workingProduct= optionsWorkingProduct.get() if excel_sold.strip() == 'Choose one value': messagebox.showwarning("Error", "Please select a value for sold by") return calendar_date = datetime.strptime(cal.get(),"%m/%d/%y") time_now = datetime.now() if calendar_date > time_now: messagebox.showwarning("Error", "Please select a date before current date") return if excel_workingProduct.strip() == 'Choose working product': #check for the not selected working product messagebox.showwarning("Error", "Please select a value for working product") return date = datetime.now() print(date) data = [excel_barcode, excel_product, excel_money, excel_sold, date, excel_workingProduct] workbook = load_workbook("dailylog.xlsx") worksheet = workbook.worksheets[0] worksheet.append(data) workbook.save("dailylog.xlsx") cleardate() def cleardate(): barcode.delete(0, 'end') product.delete(0, 'end') money.delete(0, 'end') options.set("Choose one value") # default value optionsWorkingProduct.set("Choose working product") # default value set to the working product today = datetime.now() cal.set_date(today) # button to trigger actions button = tk.Button(text="SUBMIT", command=readValue).grid(row=6, pady=20, padx=20) button = tk.Button(text="CLEAR", command=cleardate).grid(row=6, column=1, pady=20, padx=20) window.geometry("500x500") window.mainloop()
************************************************** Hey, I answer all the time your questions with exact answer.. please upvote the answers Thanks for your question. We try our best to help you with detailed answers, But in any case, if you need any modification or have a query/issue with respect to above answer, Please ask that in the comment section. We will surely try to address your query ASAP and resolve the issue.
Please consider providing a thumbs up to this question if it helps you. by Doing that, You will help other students, who are facing similar issue.
Get Answers For Free
Most questions answered within 1 hours.