def __init__(self): """Interface build.""" UI( None, title='MY GUI PLAYGROUND', banner='MY GUI PLAYGROUND', win_color='#003366', window_width=800, window_height=800, ) # self.menu_button() # self.a_message() # self.panedWindow() # self.toplevel() # self.m_button() # self.my_notebook() # TradeProgressWin('CDEV') jd_cal = Calendar(UI.w) jd_cal.grid(row=1, column=0, sticky=W) mainloop()
def create_widgets(self): self.selected_date = StringVar() cal = Calendar(self, selectmode='day', locale='en_US', date_pattern="yyyy-mm-dd", maxdate=datetime.date.today(), disabledforeground='red', textvariable=self.selected_date) cal.grid(column=0, row=0, columnspan=2, sticky='nesw') self.shift = StringVar() ttk.Radiobutton(self, text='day', variable=self.shift, value='day').grid(column=0, row=2, sticky='e') ttk.Radiobutton(self, text='night', variable=self.shift, value='night').grid(column=1, row=2, sticky='w') self.uid = StringVar() uid_entry = Entry(self, textvariable=self.uid) uid_entry.grid(column=1, row=3, sticky=(W, E)) uid_entry.focus() self.pw = StringVar() Entry(self, textvariable=self.pw, show='*').grid(column=1, row=4, sticky=(W, E)) ttk.Button(self, text='Submit', command=self.submit).grid(column=0, row=5, sticky='we') ttk.Button(self, text='Quit', command=self.stop).grid(column=1, row=5, sticky='we')
def pop_up_cal(): # make a window pop up with a calander, return to the sender the date picked win = tk.Toplevel() win.wm_title('Choose Calander') start_date_cal = Calendar(win) start_date_cal.grid()
def newreminder(): def newremind(message): with open("remind.txt","a+") as f: f.write(f"{message.get()} on {cal.selection_get()}\n") cal.see(datetime.date(year=2016, month=2, day=5)) print(message.get(),cal.selection_get()) newtop = Toplevel(root) msg=StringVar() import datetime today = datetime.date.today() mindate = datetime.date(year=2018, month=1, day=21) maxdate = today + datetime.timedelta(days=5) print(mindate, maxdate) cal = Calendar(newtop, font="Arial 14", selectmode='day', locale='en_US', mindate=mindate, maxdate=maxdate, disabledforeground='red', cursor="hand1", year=2018, month=2, day=5) cal.grid(row=1,column=0,columnspan=2) lable1=Label(newtop,text="Enter Your Message").grid(row=0,column=0) receivemessage=Entry(newtop,textvariable=msg,width=35).grid(row=0,column=1) submit=Button(newtop,text="Submit Reminder",command=lambda:newremind(msg)).grid(row=2,column=1)
def datesInput(): today = datetime.today() todayList = [int(today.strftime('%Y')), int(today.strftime('%m')), int(today.strftime('%d'))] # Checking if dates make sense def dateValidate(): departDate = datetime.strptime(toCal.get_date(), '%m/%d/%y') returnDate = datetime.strptime(fromCal.get_date(), '%m/%d/%y') if departDate > returnDate: messagebox.showerror(title="Date Validation Error", message="The return date must be after the departure date.") calRoot.lift() elif (departDate < today) or (returnDate < today): messagebox.showerror(title="Date Validation Error", message="The selected dates cannot be in the past!") calRoot.lift() elif departDate <= returnDate: schedule.setSearchDate(departDate.date()) schedule.setReturnDate(returnDate.date()) calRoot.destroy() else: pass def onClose(): calRoot.destroy() return False ## Window Creation calRoot = Tk() calRoot.title("Southwest Flight Schedules") calCalFrame = Frame(calRoot) calTitleFrame = Frame(calRoot) calButtonFrame = Frame(calRoot) gridConfigure(calRoot, [0,1,2], [0]) ## Title calTitleFrame.grid(row=0,column=0,sticky='ew') gridConfigure(calTitleFrame, [0,1], [0,1]) Label(calTitleFrame, text="Date Selection", font=('', 18, 'bold')).grid(row=0, column=0, pady=4, columnspan=2) Label(calTitleFrame, text="Departing").grid(row=1, column=0, padx=4, columnspan=1, sticky='ew') Label(calTitleFrame, text="Returning").grid(row=1, column=1, padx=4, columnspan=1, sticky='ew') ## Two Calendars calCalFrame.grid(row=1,column=0,sticky='ew') gridConfigure(calCalFrame, [0], [0,1]) toCal = Calendar(calCalFrame, selectmode = 'day', year = todayList[0], month = todayList[1], day = todayList[2]) toCal.grid(row=0, column=0, padx=4) fromCal = Calendar(calCalFrame, selectmode = 'day', year = todayList[0], month = todayList[1], day = todayList[2]+1) fromCal.grid(row=0, column=1, padx=4) ## Submit Button calButtonFrame.grid(row=2, column=0, sticky='ew') gridConfigure(calButtonFrame, [0], [0]) Button(calButtonFrame, text="Submit", command=dateValidate).grid(row=2,column=0,pady=4, columnspan=1) calRoot.lift() calRoot.protocol("WM_WINDOW_DESTROY", onClose) calRoot.mainloop() del calRoot gc.collect()
class SpecificDateFrame(ttk.Frame): def __init__(self, parent): ttk.Frame.__init__(self, parent) self.configure(padding='3 3 3 3') # add widgets self.info = ttk.Label(self, text='Pick a date') self.full_calendar = Calendar(self, font="Arial 14", selectmode='day', cursor="hand2", year=int(datetime.datetime.now().year), month=int(datetime.datetime.now().month), day=int(datetime.datetime.now().day)) # geometry self.info.grid(column=0, row=0, sticky='w') self.full_calendar.grid(column=0, row=1, sticky='n')
def pick_date_dialog(): """Display date picker dialog, print date selected when OK clicked.""" def print_sel(): """Print date selected.""" selected_date = (cal.get_date()) print(selected_date) top = Toplevel(root) # Defaults to today's date. cal = Calendar(top, font='Arial 10', background='darkblue', foreground='white', selectmode='day') cal.grid() Button(top, text='OK', command=print_sel).grid()
def fecha(self): def Pfecha(self, selected_date): self.selected_date = (cal.get_date()) print(selected_date) top = tk.Toplevel() top.grab_set() #Calendario con Fecha actual cal = Calendar(top, font="Arial 10", background='darkblue', foreground='white', selectmode='day') cal.grid() ttk.Button(top, text="Hecho", command=Pfecha).grid()
def dateSelector(): def print_sel(): global date_selected dateselected = cal.selection_get() date_selected = dateselected print(dateselected) labelstatus = ttk.Label(top, text="****Close this window.", width=20, font=("bold", 12)).grid(column=0) label_3 = ttk.Label(labelframe_2, text=dateselected, width=30, font=("bold", 10)) label_3.grid(row=4, column=6, pady=4) top.destroy() # cal.see(datetime.date(year=2020, month=2, day=5)) return dateselected top = Toplevel(expense) # top.geometry('500x500') import datetime today = datetime.date.today() mindate = datetime.date(year=2000, month=1, day=1) maxdate = today + datetime.timedelta(days=5) # print(mindate, maxdate) cal = Calendar(top, font="Arial 14", selectmode='day', locale='en_US', mindate=mindate, maxdate=maxdate, disabledforeground='red', cursor="hand1", year=2020, month=5, day=5) # cal.pack(fill="both", expand=True) cal.grid() expensebtn2 = ttk.Button(top, text="Select", command=print_sel).grid() print("Date_new:" + str(date_selected)) return date_selected
def pick_date_dialog(): '''Display GUI date picker dialog, print date selected when OK clicked''' def print_sel(): selected_date = (cal.get_date()) print(selected_date) top = tk.Toplevel(ROOT) # defaults to today's date cal = Calendar(top, font="Arial 10", background='darkblue', foreground='white', selectmode='day') cal.grid() ttk.Button(top, text="OK", command=print_sel).grid()
class Log(object): def __init__(self, root): self.root = root self.render() def view_log(self): date = str(self.cal.selection_get()) self.msg.config(state='normal') self.msg.delete(0, tk.END) self.msg.insert(0, date) self.msg.config(state='disabled') def view_screenshot(self): pass def view_camera(self): pass def clear_selected_log(self): pass def clear_all_log(self): pass def render(self): self.msg = tk.Entry(self.root, justify='center') self.msg.config(state='disabled') self.msg.grid(row=1, column=1, columnspan=2, sticky='news') self.cal = Calendar(self.root, selectmode='day') self.cal.grid(row=2, column=1, rowspan=5, sticky='nesw') button_2 = tk.Button(self.root, text='View Keyboard Log', width=25, command=self.view_log) button_3 = tk.Button(self.root, text='View Screenshot Log', width=25, command=self.view_screenshot) button_4 = tk.Button(self.root, text='View Camera Log', width=25, command=self.view_camera) button_5 = tk.Button(self.root, text='Clear Log Selected Day', width=25, command=self.clear_selected_log) button_6 = tk.Button(self.root, text='Clear All Log', width=25, command=self.clear_all_log) button_2.grid(row=2, column=2, sticky='ns') button_3.grid(row=3, column=2, sticky='ns') button_4.grid(row=4, column=2, sticky='ns') button_5.grid(row=5, column=2, sticky='ns') button_6.grid(row=6, column=2, sticky='ns')
class Datetime: def __init__(self, master, label): self.master = master self.frame = tk.Frame(self.master) self.frame.config(bg="white") self.cal = Calendar(self.frame, select="day", year=2021, month=2, day=9) self.cal.grid(row=0, column=0, padx=20, pady=20) self.time = App(self.frame) self.time.grid(row=1, column=0, padx=10, pady=10) self.label = label # -----------Buttons----------- # Select datetime button self.pickDateButton = tk.Button(self.frame, text="Seleccionar fecha y hora", command=self.grab_date) self.pickDateButton.grid(row=2, column=0, pady=20, padx=20) # Exit button self.quitButton = tk.Button(self.frame, text='Salir', width=25, command=self.close_windows) self.quitButton.grid(row=3, column=0, padx=20, pady=20) self.frame.pack() # Prints chosed date into parent window (NewRecordDate) def grab_date(self): chosedDatetime = self.cal.get_date() + " " + self.time.hourstr.get( ) + ":" + self.time.minstr.get() self.label.config(text=chosedDatetime) # Destroys current window def close_windows(self): self.master.destroy()
def show_cal2(): toplevel1 = Toplevel() def print_sel(): s2.set(cal.selection_get()) toplevel1.destroy() today = str(date.today()) l1 = today.split("-") year = l1[0] month = l1[1] day = l1[2] cal = Calendar(toplevel1, font="Arial 14", selectmode='day', cursor="hand1", year=int(year), month=int(month), day=int(day)) cal.grid(row=0, column=0) s2.set(cal.selection_get()) Button(toplevel1, text="Done", command=print_sel).grid(row=1, column=0)
class AUView(tk.Toplevel): def __init__(self, parent_view): super().__init__(parent_view) self.parent = parent_view self.title('AU/krank Eintragen') startdatum_label = tk.Label(self, text="von") self.startdatum_input = Calendar(self, date_pattern='MM/dd/yyyy') enddatum_label = tk.Label(self, text="bis") self.enddatum_input = Calendar(self, date_pattern='MM/dd/yyyy') self.save_button = tk.Button(self, text="Daten speichern") self.exit_button = tk.Button(self, text="Abbrechen", command=self.destroy) self.saveandnew_button = tk.Button(self, text="Daten speichern und neu") # ins Fenster packen startdatum_label.grid(row=1, column=0, sticky=tk.NW) self.startdatum_input.grid(row=1, column=1, columnspan=2, sticky=tk.NW) enddatum_label.grid(row=1, column=3, sticky=tk.NW) self.enddatum_input.grid(row=1, column=4, sticky=tk.NW) self.save_button.grid(row=15, column=0, sticky=tk.NW) self.exit_button.grid(row=15, column=1, sticky=tk.NW) self.saveandnew_button.grid(row=15, column=2, sticky=tk.NW) def set_data(self, **kwargs): self.startdatum_input.selection_set(kwargs['beginn']) self.enddatum_input.selection_set(kwargs['ende']) def get_data(self): startdatum_date_obj = datetime.strptime( self.startdatum_input.get_date(), '%m/%d/%Y') enddatum_date_obj = datetime.strptime(self.enddatum_input.get_date(), '%m/%d/%Y') return {'beginn': startdatum_date_obj, 'ende': enddatum_date_obj}
class CalendarView(View): def __init__(self, parent, controller): View.__init__(self, parent, controller) self.mindate = datetime.date.today() - datetime.timedelta(days=30) self.calendar = Calendar(self, font="Comic_Sans 14", selectmode='day', locale='en_US', mindate=self.mindate, disabledforeground='red', cursor="hand2") self.calendar.tag_config('Komunia', background='yellow', foreground='black') self.calendar.tag_config('Wesele', background='red', foreground='black') self.calendar.tag_config('Spotkanie biznesowe', background='blue', foreground='white') self.calendar.tag_config('Urodziny', background='black', foreground='yellow') self.button_frame = tk.Frame(self) self.buttons = [] self.__build_grid() self.grid_columnconfigure(0, weight=1) def __build_grid(self): self.calendar.grid(column=0, row=0) self.button_frame.grid(column=0, row=1) def get_date(self): return self.calendar.selection_get()
class AddNewProjection(Tk): def __init__(self, userdetails={}): Tk.__init__(self) self.userdetails = userdetails self.listOfMovies = getAllMovie() self.listOfMoviesNames = [] self.listOfAuditorium = getAllScreens() self.listOfAuditoriumIDS = [] self.selectedStartDate = str(datetime.datetime.today().date()) if self.listOfMovies == None: messagebox.showerror( 'Error', "No Moive Exits ,Please add movie before adding projection") self.destroy() elif self.listOfAuditorium == None: messagebox.showerror( 'Error', "No Auditorium Exits ,Please add Auditorium before adding projection" ) self.destroy() else: for row in self.listOfMovies: self.listOfMoviesNames.append(row[1]) for row in self.listOfAuditorium: self.listOfAuditoriumIDS.append(row[0]) self.onCreate() def onCreate(self): HEIGHT = 800 WIDTH = 800 canvas = Canvas(self, height=HEIGHT, width=WIDTH) canvas.pack() frame = Frame(canvas, bg="grey") frame.place(relx=0.01, rely=0.01, relwidth=0.98, relheight=0.98) Label(frame, text="Add New Projection", font=("Helvetica", 12)).grid(row=0, columnspan=2, pady=15, padx=15) Label(frame, text="Select Movie: ").grid(row=1, pady=10) Label(frame, text="Select Auditorium/Screen: ").grid(row=2, pady=10) Label(frame, text="Select Date : ").grid(row=3, pady=10) Label(frame, text="Select Start Time: ").grid(row=4, pady=10) Label(frame, text="Select End Time: ").grid(row=5, pady=10) self.moviesChkbox = ttk.Combobox(master=frame) self.moviesChkbox['values'] = self.listOfMoviesNames self.moviesChkbox.grid(row=1, column=1, pady=10) self.auditoriumChkbox = ttk.Combobox(master=frame) self.auditoriumChkbox['values'] = self.listOfAuditoriumIDS self.auditoriumChkbox.grid(row=2, column=1, pady=10) self.date_picker = Calendar(master=frame, date_pattern='y-mm-dd', mindate=datetime.datetime.today()) self.date_picker.bind('<<CalendarSelected>>', self.setStartDate) self.date_picker.grid(row=3, column=1, pady=10) self.startVariable = StringVar(master=frame, value="HH:MM:SS") self.endVariable = StringVar(master=frame, value="HH:MM:SS") self.startTime_entry = Entry(master=frame, textvariable=self.startVariable) self.endTime_entry = Entry(master=frame, textvariable=self.endVariable) self.startTime_entry.grid(row=4, column=1, pady=10) self.endTime_entry.grid(row=5, column=1, pady=10) Label(frame, text="24Hrs Format (%H:%M:%S) eg (16:30:00)").grid(row=4, column=2, pady=10) Label(frame, text="24Hrs Format (%H:%M:%S) eg(12:00:00)").grid(row=5, column=2, pady=10) submit_btn = Button(master=frame, text=" Submit ", command=self.onSubmitPressed) submit_btn.grid(row=6, column=0, columnspan=3, pady=10) def onSubmitPressed(self): if self.selectedStartDate == None or self.startVariable.get( ) == "HH:MM:SS" or self.endVariable.get() == "HH:MM:SS": messagebox.showerror( "Invalid Input", "All fields are mandatory plaese fill them correctly") else: startdatetime_str = str(self.selectedStartDate) + " " + str( self.startVariable.get()) enddatetime_str = str(self.selectedStartDate) + " " + str( self.endVariable.get()) try: startdatetime = datetime.datetime.strptime( startdatetime_str, "%Y-%m-%d %H:%M:%S") enddatetime = datetime.datetime.strptime( enddatetime_str, "%Y-%m-%d %H:%M:%S") except: messagebox.showerror("Invalid Time Input", "PLease enter times carefully") return movieID = self.listOfMovies[self.moviesChkbox.current()][0] auditorium_ID = self.listOfAuditoriumIDS[ self.auditoriumChkbox.current()] available_seats = self.listOfAuditorium[ self.auditoriumChkbox.current()][1] msg = AddNewProjectionToDB(movie_ID=movieID, auditorium_ID=auditorium_ID, startTime=startdatetime, endTime=enddatetime, available_seats=available_seats, total_seats=available_seats) if msg[0] == 0: messagebox.showinfo("Success", msg[1]) self.destory() if msg[0] == 1: messagebox.showerror("Error", msg[1]) def setStartDate(self, *args): self.selectedStartDate = self.date_picker.get_date() print(self.selectedStartDate) def start(self): self.mainloop() def destory(self): self.destroy()
class AssistentNewEditView(tk.Toplevel): def __init__(self, parent): super().__init__(parent) self.parent = parent headline = tk.Label(self, text="Wer bist du denn eigentlich?") vorname_label = tk.Label(self, text="Vorname") self.vorname_input = tk.Entry(self, bd=5, width=40) name_label = tk.Label(self, text="Nachname") self.name_input = tk.Entry(self, bd=5, width=40) email_label = tk.Label(self, text="Email") self.email_input = tk.Entry(self, bd=5, width=40) strasse_label = tk.Label(self, text="Straße/Hausnummer") self.strasse_input = tk.Entry(self, bd=5, width=29) self.hausnummer_input = tk.Entry(self, bd=5, width=9) plz_label = tk.Label(self, text="Postleitzahl") self.plz_input = tk.Entry(self, bd=5, width=40) stadt_label = tk.Label(self, text="Stadt") self.stadt_input = tk.Entry(self, bd=5, width=40) einstellungsdatum_label = tk.Label( self, text="Seit wann bei ad? (tt.mm.JJJJ)") self.einstellungsdatum_input = Calendar(self) self.save_button = tk.Button(self, text="Daten speichern") self.exit_button = tk.Button(self, text="Abbrechen", command=self.destroy) # ins Fenster packen headline.grid(row=0, column=0, columnspan=3) vorname_label.grid(row=1, column=0) self.vorname_input.grid(row=1, column=1, columnspan=2) name_label.grid(row=2, column=0) self.name_input.grid(row=2, column=1, columnspan=2) email_label.grid(row=3, column=0) self.email_input.grid(row=3, column=1, columnspan=2) strasse_label.grid(row=4, column=0) self.strasse_input.grid(row=4, column=1) self.hausnummer_input.grid(row=4, column=2) plz_label.grid(row=5, column=0) self.plz_input.grid(row=5, column=1, columnspan=2) stadt_label.grid(row=6, column=0) self.stadt_input.grid(row=6, column=1, columnspan=2) einstellungsdatum_label.grid(row=7, column=0, sticky="nw") self.einstellungsdatum_input.grid(row=7, column=1) self.exit_button.grid(row=8, column=0) self.save_button.grid(row=8, column=1) def set_data(self, **kwargs): self.vorname_input.insert(0, kwargs['vorname']) self.name_input.insert(0, kwargs['name']) self.email_input.insert(0, kwargs['email']) self.strasse_input.insert(0, kwargs['strasse']) self.hausnummer_input.insert(0, kwargs['hausnummer']) self.plz_input.insert(0, kwargs['plz']) self.stadt_input.insert(0, kwargs['stadt']) self.einstellungsdatum_input.selection_set(kwargs['einstellungsdatum']) def get_data(self): einstellungsdatum_date_obj = datetime.strptime( self.einstellungsdatum_input.get_date(), '%m/%d/%y') return { 'name': self.name_input.get(), 'vorname': self.vorname_input.get(), 'email': self.email_input.get(), 'einstellungsdatum': einstellungsdatum_date_obj, 'strasse': self.strasse_input.get(), 'hausnummer': self.hausnummer_input.get(), 'plz': self.plz_input.get(), 'stadt': self.stadt_input.get() }
tk.Button(tab2,text="Remove",command=RemoveTruck,fg="black",bg="green").grid(row=1,column=0,padx=(10,0),pady=(10,0)) tk.Label(tab3,text="Select Truck No : ",font=("Arial",11)).grid(row=0, column=0, pady=(10,0),sticky=tk.W+tk.E+tk.N+tk.S) tk.OptionMenu(tab3,selectedTruck,*trucklist).grid(row=0, column=1,pady=(10,0),sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) tk.Label(tab3,text="Total Amount: ",font=("Arial",11)).grid(row=1, column=0,sticky=tk.W+tk.E+tk.N+tk.S) tk.Entry(tab3,textvariable=totalamt).grid(row=1, column=1,sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) tk.Label(tab3,text="Advance Amount: ",font=("Arial",11)).grid(row=2, column=0,sticky=tk.W+tk.E+tk.N+tk.S) tk.Entry(tab3,textvariable=advamt).grid(row=2, column=1,sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) tk.Label(tab3,text="Select Party: ",font=("Arial",11)).grid(row=3, column=0,sticky=tk.W+tk.E+tk.N+tk.S) tk.OptionMenu(tab3,selectedParty,*partylist).grid(row=3, column=1,sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) tk.Label(tab3,text="Select Payment Accounts: ",font=("Arial",11)).grid(row=4, column=0,sticky=tk.W+tk.E+tk.N+tk.S) tk.OptionMenu(tab3,selectedAcct,*Acct).grid(row=4, column=1,sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) tk.Label(tab3,text="Select Date : ",font=("Arial",11)).grid(row=5, column=0,sticky=tk.W+tk.E+tk.N+tk.S) cal=Calendar(tab3,selectmode='day') cal.grid(row=5,column=1,sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) #tk.Button(tab3,text="Submit",command=RemoveTruck,fg="black",bg="green").grid(row=6,column=1,padx=(10,0),pady=(10,0),sticky=tk.W+tk.E+tk.N+tk.S) tk.Label(tab3,text="Expenditure : ",font=("Arial",11)).grid(row=6, column=0,sticky=tk.W+tk.E+tk.N+tk.S) tk.Button(tab3,text="Add",command=AddExpend).grid(row=6,column=1,sticky=tk.W+tk.E+tk.N+tk.S) tk.Button(tab3,text="Done",command=DoneAdding).grid(row=6,column=2,sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) tk.Label(tab5,text="Select UID. : ",font=("Arial",11)).grid(row=0, column=0, pady=(10,0),sticky=tk.W+tk.E+tk.N+tk.S) tk.OptionMenu(tab5,selectedUID,*UID).grid(row=0, column=1,pady=(10,0),sticky=tk.W+tk.E+tk.N+tk.S,columnspan=3) tk.Button(tab5,text="Remove",command=RemoveTrip,fg="black",bg="green").grid(row=2,column=1,padx=(10,0),pady=(10,0)) tk.Label(tab4,text="Select UID : ",font=("Arial",11)).grid(row=0, column=0, pady=(10,0),sticky=tk.W+tk.E+tk.N+tk.S) tk.OptionMenu(tab4,selectedUID,*UID).grid(row=0, column=1,pady=(10,0),sticky=tk.W+tk.E+tk.N+tk.S) tk.Button(tab4,text="Submit",command=ShowUID,fg="black",bg="green").grid(row=1,column=0,padx=(10,0),pady=(10,0)) tk.Label(tab10,text="Enter Expentiture Type : ",font=("Arial",11)).grid(row=0, column=0, pady=(10,0))
class ChangeStatement: """ Изменить состояние канала """ def __init__(self, tree, iid, num, all_trees, logit): self.tree = tree self.iid = iid self.num = num self.all_trees = all_trees self.logit = logit self.row = self.tree.item(iid) self.key_tree = self.row['values'][0] self.all_values = all_values self.name = self.all_values[self.num][0][self.key_tree] self.add_in_table = all_values[self.num][1] def on_time(self): """ Выбрать время """ self.top = tk.Toplevel() self.top.wm_title(self.name) lab1 = tk.Label(self.top, text='Дата и время начала работ', font=tkFont.Font(family=main_font, size=size_font)) lab1.grid(row=0, column=0, columnspan=4, ipady=10, padx=10) self.cal1 = Calendar(self.top, font="Arial 14", selectmode="day", year=datetime.datetime.today().year, month=datetime.datetime.today().month, day=datetime.datetime.today().day) self.cal1.grid(row=1, column=0, columnspan=4, rowspan=4, padx=10) self.time1 = AppTime(self.top) self.time1.grid(row=5, column=0, columnspan=4, pady=10) lab2 = tk.Label(self.top, text='Дата и время завершения работ', font=tkFont.Font(family=main_font, size=size_font)) lab2.grid(row=0, column=5, columnspan=4, ipady=10) self.cal2 = Calendar(self.top, font="Arial 14", selectmode="day", year=datetime.datetime.today().year, month=datetime.datetime.today().month, day=datetime.datetime.today().day) self.cal2.grid(row=1, column=5, columnspan=4, rowspan=4, padx=10) self.time2 = AppTime(self.top) self.time2.grid(row=5, column=5, columnspan=4, pady=10) self.day1 = self.cal1.get_date() self.day2 = self.cal2.get_date() self.hour1 = self.time1.hourstr.get() self.hour2 = self.time2.hourstr.get() self.min1 = self.time1.minstr.get() self.min2 = self.time2.minstr.get() text4 = tk.Label(self.top, text='Добавьте комментарий:', font=tkFont.Font(family=main_font, size=size_font)) text4.grid(row=6, column=0, columnspan=5, padx=10) self.comment_text = ScrolledText.ScrolledText(self.top, height=4, width=40, font=tkFont.Font( family=main_font, size=size_font), wrap=WORD) self.comment_text.grid(row=7, column=0, columnspan=5, padx=10, pady=10) but1 = tk.Button(self.top, text="Выбрать", command=self.select_on_time, activebackground='PaleGreen1', font=tkFont.Font(family=main_font, size=size_font), height=2, width=10) but1.grid(row=7, column=6) but2 = tk.Button(self.top, text="Отмена", command=self.top.destroy, activebackground='salmon', font=tkFont.Font(family=main_font, size=size_font), height=2, width=10) but2.grid(row=7, column=7) self.top.resizable(height=False, width=False) def select_on_time(self): """ Отправить по времени""" date_order = [2, 0, 1] date_list1 = self.day1.split('/') date_list2 = self.day2.split('/') date_list1 = ['0' + i if len(i) == 1 else i for i in date_list1] date_list2 = ['0' + i if len(i) == 1 else i for i in date_list2] date_list1 = [date_list1[i] for i in date_order] date_list2 = [date_list2[i] for i in date_order] date_list1[0] = '20' + date_list1[0] date_list2[0] = '20' + date_list2[0] date1 = '-'.join(date_list1) date2 = '-'.join(date_list2) begin = date1 + ' ' + str(self.hour1) + ':' + str(self.min1) end = date2 + ' ' + str(self.hour2) + ':' + str(self.min2) new_value = { self.key_tree: [self.name, begin.encode('utf-8'), end.encode('utf-8')] } par1 = "Ремонт с".decode('koi8-r').encode('koi8-r') par2 = "до".decode('koi8-r').encode('koi8-r') for item in self.all_values.keys(): for all_dict in self.all_values[item][0]: if self.name == self.all_values[item][0][all_dict]: if item in list_moxa: tree = self.all_trees[item] remont = load_file('remont', item) remont.update(new_value) dump_file('remont', item, remont) tree_num = self.key_tree - 1 row = tree.tree.get_children()[tree_num] tree.tree.item( row, values=(str(self.key_tree), str(new_value[self.key_tree][0]), "%s %s %s %s" % (par1, new_value[self.key_tree][1], par2, new_value[self.key_tree][2])), tags=("blue", )) self.logit.warning( 'Канал %s в MOXA%s отправлен на ремонт на период с %s до %s' % (new_value[self.key_tree][0], self.num, begin.encode('utf-8'), end.encode('utf-8'))) lst = [ self.key_tree, str(new_value[self.key_tree][0]), "%s %s %s %s" % (par1, new_value[self.key_tree][1], par2, new_value[self.key_tree][2]), "blue" ] new_value_add = {self.key_tree: lst} self.add_in_table.update(new_value_add) add_comment(self.comment_text.get('1.0', END), item, self.key_tree, self.name) self.top.destroy() def on_agreement(self): """ Отправить в ремонт до распоряжения""" date_today = datetime.datetime.now() begin = date_today.strftime("%Y-%m-%d %H:%M") end = 'распоряжения'.decode('koi8-r').encode('koi8-r') new_value = {self.key_tree: [self.name, begin.encode('utf-8'), end]} par1 = "Ремонт с".decode('koi8-r').encode('koi8-r') par2 = "до".decode('koi8-r').encode('koi8-r') for item in self.all_values.keys(): for all_dict in self.all_values[item][0]: if self.name == self.all_values[item][0][ all_dict] and item in list_moxa: tree = self.all_trees[item] remont = load_file('remont', item) remont.update(new_value) dump_file('remont', item, remont) tree_num = self.key_tree - 1 row = tree.tree.get_children()[tree_num] tree.tree.item( row, values=(str(self.key_tree), str(new_value[self.key_tree][0]), "%s %s %s %s" % (par1, new_value[self.key_tree][1], par2, new_value[self.key_tree][2])), tags=("blue", )) self.logit.warning( 'Канал %s в MOXA%s отправлен на ремонт на период с %s до %s' % (new_value[self.key_tree][0], item, begin, end)) lst = [ self.key_tree, str(new_value[self.key_tree][0]), "%s %s %s %s" % (par1, new_value[self.key_tree][1], par2, new_value[self.key_tree][2]), "blue" ] new_value_add = {self.key_tree: lst} self.add_in_table.update(new_value_add) def return_channel(self): """ Вернуть канал в работу""" for item in self.all_values.keys(): for all_dict in self.all_values[item][0]: if self.name == self.all_values[item][0][all_dict]: if item in list_moxa: tree = self.all_trees[item] remont = load_file('remont', item) for key in remont.keys(): if key == self.key_tree: del (remont[key]) dump_file('remont', item, remont) tree_num = self.key_tree - 1 row = tree.tree.get_children()[tree_num] moxa = self.all_values[item][0] tree.tree.item( row, values=(str(self.key_tree), str(moxa[self.key_tree]), str('updating status...')), tags=("green", )) self.logit.warning( 'Канал %s в MOXA%s возвращен в работу' % (moxa[self.key_tree], item)) lst = [ self.key_tree, str(moxa[self.key_tree]), 'updating status...', "green" ] new_value_add = {self.key_tree: lst} self.add_in_table.update(new_value_add)
class MainWindowClass(HeaderBarSetupClass): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.openWindow() self.title("Main window") self.geometry("750x650") self.overrideredirect(True) self.configure(background=sc.mainBackgroundDarkerM) for x in range(8): self.grid_columnconfigure(x, weight=1, minsize=60, uniform="fred") for y in range(14): self.grid_rowconfigure(y, weight=1, minsize=45, uniform="fred") # # ############ Nav Config ############### # # self.grip = self.clone(self.myLabelTitle) self.grip['text'] = "Main window" self.grip.grid(column=0, row=0, columnspan=8, sticky=W + E + S + N) self.grip.bind("<ButtonPress-1>", self.start_move) self.grip.bind("<ButtonRelease-1>", self.stop_move) self.grip.bind("<B1-Motion>", self.do_move) self.grip.bind("<Map>", self.frame_mapped) self.exit = tk.Button(self, text=" X ", borderwidth=0, background=sc.mainBackgroundDarker, foreground=sc.mainTextColor, command=lambda: self.closeWindow()) self.exit.grid(column=7, row=0, sticky=E + N) self.minimalize = tk.Button(self, text=" - ", borderwidth=0, background=sc.mainBackgroundDarker, foreground=sc.mainTextColor, command=lambda: self.minimalizeApp()) self.minimalize.grid(column=7, row=0, sticky=N) # # ############ Rest of Ui ############### # # self.dateVar = tk.StringVar() self.calendar = Calendar(self, font=sc.fontNormal, style='my.DateEntry', bordercolor=sc.mainBorderLighter, headersbackground=sc.mainBackgroundDarkerM, headersforeground=sc.mainTextColor, foreground=sc.mainTextColor, background=sc.mainBackgroundDarker, normalbackground=sc.mainBackgroundDarker, normalforeground=sc.mainTextColor, weekendbackground=sc.mainBackgroundDarker, weekendforeground=sc.mainTextColor, othermonthbackground=sc.mainBackground, othermonthforeground=sc.mainTextColor, othermonthwebackground=sc.mainBackground, othermonthweforeground=sc.mainTextColor) self.calendar.grid(column=0, row=1, rowspan=10, columnspan=8, sticky=N + S + W + E) self.calendar['date_pattern'] = 'y-mm-dd' self.calendar['textvariable'] = self.dateVar # Navigation Buttons self.addEventB = tk.Button(self, text="Add Event Window", borderwidth=0, font=sc.fontNormal, background=sc.mainBackgroundDarker, foreground=sc.mainTextColor, command=lambda: self.openAddEventWindow()) self.addEventB.grid(column=0, columnspan=2, row=11, rowspan=2, sticky=N + S + W + E) self.searchB = tk.Button(self, text="Search Event Window", borderwidth=0, font=sc.fontNormal, background=sc.mainBackgroundDarker, foreground=sc.mainTextColor, command=lambda: self.openSearchWindow()) self.searchB.grid(column=3, columnspan=2, row=11, rowspan=2, sticky=N + S + W + E) self.dayWindowB = tk.Button(self, text="Day Window", borderwidth=0, font=sc.fontNormal, background=sc.mainBackgroundDarker, foreground=sc.mainTextColor, command=lambda: self.goToDay()) self.dayWindowB.grid(column=6, columnspan=2, row=11, rowspan=2, sticky=N + S + W + E) # Bottom label self.footer = self.clone(self.myLabel) self.footer['text'] = 'Time organizer by Adam Sierakowski' self.footer['foreground'] = sc.mainTextColorDarker self.footer.grid(column=0, row=13, columnspan=8, sticky=N + S + W + E) def goToDay(self): chosenDate = self.dateVar.get() if (chosenDate != ''): dateToGet = date.fromisoformat(chosenDate) self.openDayWindow(dateToGet) x = 1
checkbtn_var = tk.IntVar() checkbtn = ttk.Checkbutton( tab1, text="Select if the customer wants to be followed up: ", var=checkbtn_var) checkbtn.grid(row=12, columnspan=4, sticky=tk.W) ##Date button for follow up cal = Calendar( tab1, selectmode='none', day=20, month=2, year=2022, ) cal.grid(row=15, column=0, pady=20) def Calenderbutton(): date_btn_var = cal.get_date() date_btn_var date_btn_var = tk.StringVar() date_btn = ttk.Button(tab1, width=23, text='Select Date for follow up', command=Calenderbutton()) date_btn.grid(row=14, column=0, sticky=tk.W) # END of Details
from tkinter import * from tkcalendar import Calendar import sqlite3 import datetime now = datetime.datetime.now().strftime("%I:%M:%S %p") # Create Object root = Tk() # Set geometry root.geometry("500x400") root.title("Event Scheduler") # Add Calender cal = Calendar(root, selectmode='day', year=2020, month=5, day=22) cal.grid(column=1) #set the date def grad_date(): global c #time monitoring now = datetime.datetime.now().strftime("%I:%M:%S %p") #time declaration declared_time = datetime.datetime.now().strftime("%I:%M %p") #logic key time in seconds time_condition = datetime.datetime.now().strftime("%S") date.config(text="Selected Date is: " + cal.get_date()) conn = sqlite3.connect('ES.db') c = conn.cursor()
class SchichtView(tk.Toplevel): def __init__(self, parent_view, asn_liste, adressliste): super().__init__(parent_view) # unterframes zur optisch-logischen Einteilung self.asn_frame = tk.Frame(self) self.datetime_frame = tk.Frame(self) self.template_frame = tk.Frame(self.asn_frame) self.add_options_frame = tk.Frame(self) self.add_options_checkbuttons_frame = tk.Frame(self.add_options_frame) self.save_buttons_frame = tk.Frame(self) self.asn_dropdown = Combobox(self.asn_frame, values=asn_liste, width=38, state="readonly") self.asn_dropdown.set(-1) self.selected_template = tk.IntVar() self.asn_stammdaten_form = AsnStammdatenView( parent_view=self.asn_frame) self.startdatum_input = Calendar(self.datetime_frame, date_pattern='MM/dd/yyyy') # day=day, # month=month, # year=year) self.startzeit_input = TimePicker(self.datetime_frame) self.endzeit_input = TimePicker(self.datetime_frame) self.startzeit_input.bind('<FocusOut>', self.nachtschicht_durch_uhrzeit) self.endzeit_input.bind('<FocusOut>', self.nachtschicht_durch_uhrzeit) self.enddatum_input = Calendar(self.datetime_frame, date_pattern='MM/dd/yyyy') # , day=day, month=month, year=year) self.abweichende_adresse_beginn = PostadresseView( self.add_options_frame) self.abweichende_adresse_ende = PostadresseView(self.add_options_frame) self.abweichende_adresse_beginn_dropdown = Combobox( self.add_options_frame, values=adressliste, width=38, state="readonly") self.abweichende_adresse_beginn_dropdown.set(-2) self.abweichende_adresse_ende_dropdown = Combobox( self.add_options_frame, values=adressliste, width=38, state="readonly") self.abweichende_adresse_ende_dropdown.set(-2) self.ist_at = tk.IntVar() self.ist_pcg = tk.IntVar() self.ist_rb = tk.IntVar() self.ist_afg = tk.IntVar() self.ist_at_button = tk.Checkbutton( self.add_options_checkbuttons_frame, text="AT", onvalue=1, offvalue=0, variable=self.ist_at) self.ist_pcg_button = tk.Checkbutton( self.add_options_checkbuttons_frame, text="PCG", onvalue=1, offvalue=0, variable=self.ist_pcg) self.ist_rb_button = tk.Checkbutton( self.add_options_checkbuttons_frame, text="Kurzfristig (RB/BSD)", onvalue=1, offvalue=0, variable=self.ist_rb) self.ist_afg_button = tk.Checkbutton( self.add_options_checkbuttons_frame, text="Ausfallgeld", onvalue=1, offvalue=0, variable=self.ist_afg) # formbuttons self.save_button = tk.Button(self.save_buttons_frame, text="Daten speichern") self.exit_button = tk.Button(self.save_buttons_frame, text="Abbrechen") # command=self.destroy) self.saveandnew_button = tk.Button(self.save_buttons_frame, text="Daten speichern und neu") # command=lambda: self.action_save_neue_schicht(undneu=1)) def draw_templates(self, template_list): for child in self.template_frame.winfo_children(): child.destroy() if not template_list: self.add_template_text() else: for template in template_list: text = template.bezeichner text += " von " + template.beginn.strftime('%H:%M') \ + " bis " + template.ende.strftime('%H:%M') button = tk.Radiobutton( self.template_frame, text=text, variable=self.selected_template, value=template.id, command=lambda: self.change_template(template_list)) button.pack() def nachtschicht_durch_uhrzeit(self, event=None): start = time(hour=int(self.startzeit_input.hourstr.get()), minute=int(self.startzeit_input.minstr.get())) ende = time(hour=int(self.endzeit_input.hourstr.get()), minute=int(self.endzeit_input.minstr.get())) beginn = self.startdatum_input.selection_get() if ende < start: enddatum = beginn + timedelta(days=1) else: enddatum = beginn self.enddatum_input.selection_set(enddatum) def change_template(self, template_list): template_id = self.selected_template.get() for template in template_list: if template_id == template.id: self.startzeit_input.hourstr.set( template.beginn.strftime('%H')) self.startzeit_input.minstr.set(template.beginn.strftime('%M')) self.endzeit_input.hourstr.set(template.ende.strftime('%H')) self.endzeit_input.minstr.set(template.ende.strftime('%M')) self.nachtschicht_durch_uhrzeit() break def draw(self): # positionierung der Unterframes self.asn_frame.grid(row=0, column=0, sticky=tk.NW) self.datetime_frame.grid(row=0, column=1, sticky=tk.NW) self.template_frame.grid(row=1, column=0, sticky=tk.NW, columnspan=4) self.add_options_frame.grid(row=2, column=0, columnspan=2, sticky=tk.NW) self.add_options_checkbuttons_frame.grid(row=3, column=0, columnspan=2, sticky=tk.NW) self.save_buttons_frame.grid(row=3, column=0, columnspan=2, sticky=tk.NE) # asn-frame asn_label = tk.Label(self.asn_frame, text='ASN auswählen') asn_label.grid(row=0, column=0, sticky=tk.NW) self.asn_dropdown.grid(row=0, column=1, sticky=tk.NE) self.asn_stammdaten_form.grid(row=1, column=0, columnspan=2, sticky=tk.NW) # datetime-frame startdatum_label = tk.Label(self.datetime_frame, text='Beginn') startdatum_label.grid(row=0, column=0, sticky=tk.NW) self.startdatum_input.grid(row=1, column=0, sticky=tk.NW, columnspan=2) self.startzeit_input.grid(row=0, column=1, sticky=tk.NW) enddatum_label = tk.Label(self.datetime_frame, text='Ende') enddatum_label.grid(row=0, column=2, sticky=tk.NW) self.enddatum_input.grid(row=1, column=2, sticky=tk.NW, columnspan=2) self.endzeit_input.grid(row=0, column=3, sticky=tk.NW) # add-options-frame abweichende_adresse_beginn_label = tk.Label( self.add_options_frame, text="Adresse zu beginn der Schicht?") abweichende_adresse_ende_label = tk.Label( self.add_options_frame, text="Adresse zum Ende der Schicht?") abweichende_adresse_beginn_label.grid(row=0, column=0, sticky=tk.NW) self.abweichende_adresse_beginn_dropdown.grid(row=1, column=0, sticky=tk.NE) self.abweichende_adresse_beginn.grid(row=2, column=0, sticky=tk.NW) abweichende_adresse_ende_label.grid(row=0, column=1, sticky=tk.NW) self.abweichende_adresse_ende_dropdown.grid(row=1, column=1, sticky=tk.NE) self.abweichende_adresse_ende.grid(row=2, column=1, sticky=tk.NW) self.ist_at_button.grid(row=0, column=0, sticky=tk.NW) self.ist_pcg_button.grid(row=0, column=1, sticky=tk.NW) self.ist_rb_button.grid(row=0, column=2, sticky=tk.NW) self.ist_afg_button.grid(row=0, column=3, sticky=tk.NW) # save-button-frame self.save_button.grid(row=0, column=0) self.exit_button.grid(row=0, column=1) self.saveandnew_button.grid(row=0, column=2) @staticmethod def hide(frame: tk.Frame): frame.grid_remove() @staticmethod def show(frame: tk.Frame): frame.grid() def add_template_text(self): # template-frame template_text = tk.Label( self.template_frame, justify="left", text='Wenn der Assistent "Schicht-Vorlagen" hat,\n' 'stehen diese hier zur Auswahl.\n\n' 'Das ist absolut anzuraten, da es das Eintragen\n' 'von Schichten deutlich beschleunigt. \n\n' 'Die Möglichkeit dazu findest Du im Hauptfenster unter: \n' 'Bearbeiten -> ASN bearbeiten') template_text.pack() def set_data(self, **kwargs): """ parst alle daten ins Formular :param kwargs: :return: """ if 'asn' in kwargs.keys(): self.asn_dropdown.set(kwargs['asn']) if 'asn_stammdaten' in kwargs.keys(): self.asn_stammdaten_form.set_data(**kwargs['asn_stammdaten']) if 'beginn' in kwargs.keys(): self.startdatum_input.selection_set(date=kwargs['beginn']) self.startzeit_input.hourstr.set(kwargs['beginn'].strftime('%H')) self.startzeit_input.minstr.set(kwargs['beginn'].strftime('%M')) if 'ende' in kwargs.keys(): self.enddatum_input.selection_set(date=kwargs['ende']) self.endzeit_input.hourstr.set(kwargs['ende'].strftime('%H')) self.endzeit_input.minstr.set(kwargs['ende'].strftime('%M')) self.ist_at.set( 1 if 'ist_at' in kwargs.keys() and kwargs['ist_at'] else 0) self.ist_pcg.set( 1 if 'ist_pcg' in kwargs.keys() and kwargs['ist_pcg'] else 0) self.ist_rb.set( 1 if 'ist_rb' in kwargs.keys() and kwargs['ist_rb'] else 0) self.ist_afg.set( 1 if 'ist_afg' in kwargs.keys() and kwargs['ist_afg'] else 0) # TODO Zurücksetzen bei Change ASN if 'abweichende_adresse_beginn' in kwargs.keys(): if kwargs['abweichende_adresse_beginn']: self.abweichende_adresse_beginn_dropdown.set( kwargs['abweichende_adresse_beginn']) if 'abweichende_adresse_ende' in kwargs.keys(): if kwargs['abweichende_adresse_ende']: self.abweichende_adresse_ende_dropdown.set( kwargs['abweichende_adresse_ende']) def get_data(self): return { 'asn_id': self.asn_dropdown.get(), 'asn_stammdaten': self.asn_stammdaten_form.get_data(), 'startdatum': self.startdatum_input.get_date(), 'startzeit_stunde': self.startzeit_input.hourstr.get(), 'startzeit_minute': self.startzeit_input.minstr.get(), 'enddatum': self.enddatum_input.get_date(), 'endzeit_stunde': self.endzeit_input.hourstr.get(), 'endzeit_minute': self.endzeit_input.minstr.get(), 'abweichende_adresse_beginn': self.abweichende_adresse_beginn_dropdown.get(), 'abweichende_adresse_beginn_data': self.abweichende_adresse_beginn.get_data(), 'abweichende_adresse_ende': self.abweichende_adresse_ende_dropdown.get(), 'abweichende_adresse_ende_data': self.abweichende_adresse_ende.get_data(), 'ist at': self.ist_at.get(), 'ist pcg': self.ist_pcg.get(), 'ist rb': self.ist_rb.get(), 'ist afg': self.ist_afg.get() }
frame.pack(padx=10, pady=10) # title type, release_date (from, to), genres, user_raiting, countries. title_types_listbox, title_types_div = new_scrollable_listbox( frame, list(title_types.keys()), "Title type") title_types_div.grid(column=0, row=0) genres_listbox, genres_div = new_scrollable_listbox( frame, list(genres.keys()), "Genres") genres_div.grid(column=1, row=0) release_date_from_label = Label(frame, text="Release date from") release_date_from_label.grid(column=0, row=1) release_date_from_calendar = Calendar(frame) release_date_from_calendar.grid(column=0, row=2) release_date_to_label = Label(frame, text="to") release_date_to_label.grid(column=1, row=1) release_date_to_calendar = Calendar(frame) release_date_to_calendar.grid(column=1, row=2) user_raiting_label = Label(frame, text="User rating") user_raiting_label.grid(column=0, row=3, columnspan=2) # https://github.com/MenxLi/tkSliderWidget slider = Range_slider(frame, width=400, height=60, min_val=1, max_val=10, init_lis=[1, 10],
def Search(): clear(frame2) frame3 = Frame(frame2) frame4 = Frame(frame2) frame5 = Frame(frame2) Label(frame3, text="Guest First Name", font=("arial", 12), height=2).grid(row=0, column=0) FirstName = Entry(frame3, font=("arial", 12)) FirstName.grid(row=0, column=1) Label(frame3, text="Guest Last Name", font=("arial", 12), height=2).grid(row=0, column=2) LastName = Entry(frame3, font=("arial", 12)) LastName.grid(row=0, column=3) Label(frame3, text="Room Number", font=("arial", 12), height=2).grid(row=0, column=4) Room = Entry(frame3, font=("arial", 12)) Room.grid(row=0, column=5) Label(frame3, text="Phone Number", font=("arial", 12), height=2).grid(row=0, column=6) Phone = Entry(frame3, font=("arial", 12)) Phone.grid(row=0, column=7) Label(frame4, text="Street Address", font=("arial", 12), height=2).grid(row=1, column=0) Address = Entry(frame4, font=("arial", 12)) Address.grid(row=1, column=1) Label(frame4, text="Check In Date", font=("arial", 12), height=2).grid(row=1, column=2) CheckIn = Calendar(frame4, selectmode='day', date_pattern='y-mm-dd') CheckIn.selection_clear() CheckIn.grid(row=1, column=3) Label(frame4, text="Check Out Date", font=("arial", 12), height=2).grid(row=1, column=4) CheckOut = Calendar(frame4, selectmode='day', date_pattern='y-mm-dd') CheckOut.selection_clear() CheckOut.grid(row=1, column=5) def check(): search_result = search_data(FirstName.get(), LastName.get(), Room.get(), Phone.get(), Address.get(), CheckIn.get_date(), CheckOut.get_date()) if search_result: clear(frame5) Label(frame5, text="Guest Name", font=("arial", 20), height=2, width=18).grid(row=0, column=0) Label(frame5, text="Room Number", font=("arial", 20), height=2, width=18).grid(row=0, column=1) Label(frame5, text="Check In Date", font=("arial", 20), height=2, width=18).grid(row=0, column=2) Label(frame5, text="Check out Date", font=("arial", 20), height=2, width=18).grid(row=0, column=3) for i in range(len(search_result)): B = Button(frame5, text=search_result[i][0] + ' ' + search_result[i][1], command=partial(GuestProfile, search_result[i][5]), font=("arial", 15), height=2, width=24, borderwidth=1, relief="groove") B.grid(row=i + 1, column=0) Label(frame5, text=search_result[i][2], font=("arial", 15), height=2, width=24, borderwidth=1, relief="groove").grid(row=i + 1, column=1) Label(frame5, text=search_result[i][3], font=("arial", 15), height=2, width=24, borderwidth=1, relief="groove").grid(row=i + 1, column=2) Label(frame5, text=search_result[i][4], font=("arial", 15), height=2, width=24, borderwidth=1, relief="groove").grid(row=i + 1, column=3) elif search_result == []: clear(frame5) Label(frame5, text="No Match Found", font=("arial", 25), height=2).grid(row=0, column=0) else: clear(frame5) Label(frame5, text="Please Enter Input(s)", font=("arial", 25), height=2).grid(row=0, column=0) CheckIn.selection_clear() CheckOut.selection_clear() Button1 = Button(frame4, text='Search', command=check, font=("arial", 14)).grid(row=1, column=6) frame3.grid(row=0, column=0) frame4.grid(row=1, column=0) frame5.grid(row=2, column=0) frame2.grid(row=1, column=0)
cal = Calendar(root, font="fixedsys 14", selectmode="day", locale="en_US", cursor="sizing", background="white", disabledbackground="white", bordercolor="pink", headersbackground="bisque2", normalbackground="black", foreground="bisque4", normalforeground="bisque4", headersforeground="bisque4") cal.config(background="black") cal.grid(row=0, column=0, sticky="N", rowspan=9) cal.bind("<<CalendarSelected>>", ListTodo) #Variable Global tanggal = str(cal.selection_get()) #Style style = ttk.Style() style.configure("Treeview", background="bisque4", foreground="bisque4") treev = ttk.Treeview(root) treev.grid(row=0, column=1, sticky="WNE", rowspan=4, columnspan=2) #Scrollbar Settings scrollBar = tk.Scrollbar(root, orient="vertical", command=treev.yview) scrollBar.grid(row=0, column=3, sticky="ENS", rowspan=4)
Grid.rowconfigure(root, 0, weight=1) Grid.columnconfigure(root, 0, weight=1) cal = Calendar( root, font="Arial 25", locale='en_US', showweeknumbers=False, showothermonthdays=False, ) entry = ttk.Entry(root) btn = ttk.Button(root, text="Choose file", command=OnChooseFile) btn_parse = ttk.Button(root, text="Parse", command=OnParse) cal.grid(row=0, column=0, rowspan=8, columnspan=8, sticky=tk.N + tk.S + tk.W + tk.E) entry.grid(row=8, column=0, columnspan=7, sticky=tk.W + tk.E) btn.grid(row=8, column=7) btn_parse.grid(row=9, column=0, rowspan=1, columnspan=8) cal.bind("<<CalendarSelected>>", OnSelected) cal.bind("<<CalendarMonthChanged>>", OnMonthChanged) cal.tag_config('reminder', background='deep pink', foreground='white') #background='royal blue' root.mainloop()
class BIKE(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) self.controller=controller self.label=tk.Label(self, text="BIKE DETAILS", font=LARGE_FONT) self.CID=Label(self, text="ENTER CURRENT CUSTOMER ID:", font=SMALL_FONT) self.transID=Label(self, text="ENTER TRANSACTION ID:", font=SMALL_FONT) self.current_id=Text(self, height=2, width=30) self.current_trans=Text(self, height=2, width=30) self.label.grid(row=0,column=1,sticky='w',padx=20, pady=20) self.CID.grid(row=1, column=0, sticky='w',padx=20, pady=20) self.current_id.grid(row=1, column=1, sticky='w',padx=20, pady=20) self.transID.grid(row=2, column=0, sticky='w',padx=20, pady=20) self.current_trans.grid(row=2, column=1, sticky='w',padx=20, pady=20) self.DatePicked=datetime.date(1984, 6, 24) #adding radio buttons for choosing car self.bikes=[("Pulsar",0), ("Splendor",1), ("X-Blade",2), ("FZ-S",3)] self.label1=tk.Label(self, text="Choose Bike: ", font=SMALL_FONT) self.label1.grid(row=3,column=0, sticky=W,padx=20, pady=20) self.var=StringVar() self.r1=Radiobutton(self, text="PULSAR", variable=self.var, value="Pulsar", command=self.asign).grid(row=3, column=1, sticky='w',padx=20, pady=20) self.r2=Radiobutton(self, text="SPLENDOR", variable=self.var, value="Splendor", command=self.asign).grid(row=4, column=1, sticky='w',padx=20, pady=20) self.r3=Radiobutton(self, text="X-BLADE", variable=self.var, value="X-Blade", command=self.asign).grid(row=5, column=1, sticky='w',padx=20, pady=20) self.r4=Radiobutton(self, text="FZ-S", variable=self.var, value="FZ-S", command=self.asign).grid(row=6, column=1, sticky='w',padx=20, pady=20) #Adding calender to select date ttk.Label(self, text="Date: ", font=SMALL_FONT).grid(row=7, column=0,sticky='w',padx=20, pady=20) ttk.Button(self, text='Calendar', command=lambda: self.opencal("Calendar")).grid(row=7,column=1, sticky='w',padx=20, pady=20) #adding dropdown box for plan selection self.label2=ttk.Label(self, text="Choose plan", font=SMALL_FONT) self.label2.grid(row=8,column=0,sticky='w',padx=20, pady=20) options=["1 Day","5 Days", "10 Days"] self.variable=StringVar(self) self.variable.set(options[0]) self.w=OptionMenu(self,self.variable, *options) self.w.grid(row=8,column=1,sticky='w',padx=20, pady=20) #Adding the back and next button self.button1=ttk.Button(self, text="BACK", command=lambda: controller.show_frame(VehicleType)) self.button2=ttk.Button(self, text="NEXT", command=self.adding) self.button1.grid(row=9, column=0, sticky='w',padx=20, pady=20) self.button2.grid(row=9, column=1, sticky='w',padx=20, pady=20) def adding(self): self.CID=self.current_id.get("1.0","end-1c") self.tid=self.current_trans.get("1.0","end-1c") self.days=self.variable.get() # This stores the duration for which the vehicle is rented if self.days=="1 Day": self.day="one_day" elif self.days=="5 Days": self.day="five_days" elif self.days=="10 Days": self.day="ten_days" self.bike_price=calculating_bike_price(self.day, self.BikeChoice, 0) self.CarChoice="-" self.customer_name=get_customer_name(self.CID,"") inserting_trsaction(self.CID, self.customer_name, self.tid, self.CarChoice, self.BikeChoice, self.DatePicked, self.days, self.bike_price) def print_sel(self): self.DatePicked=(self.cal.selection_get()).strftime('%m/%d/%Y') self.popup.destroy() def opencal(self,msg): self.popup=tk.Toplevel() self.msg=self.popup.wm_title("calender") self.la=ttk.Label(self.popup, text=msg, font=LARGE_FONT) self.la.grid(row=0,column=0, sticky='w') self.cal=Calendar(self.popup, font="Arial 14", selectmode='day', cursor='hand1', year=2018, month=2, day=5) self.bu=ttk.Button(self.popup, text="OK", command=self.print_sel) self.cal.grid(row=1,column=0, sticky='w') self.bu.grid(row=2, column=0, sticky='w') self.popup.mainloop() def asign(self): self.BikeChoice=self.var.get()
def login_table(): try: top = Toplevel(gui) # top.geometry("100x100") top.configure(bg='white') top.title("GENERATE LOG SHEET") def gen(): def genrate(d, d1, t, t1): # loc = time.strftime("%H%M%S") wb = openpyxl.Workbook() # Get workbook active sheet # from the active attribute sheet = wb.active conn = sqlite3.connect('datacollector.db') curs = conn.cursor() curs.execute( "SELECT * FROM LOGIN WHERE ID = 'Unrecognized' AND Login_Date >= (?) AND Login_Date <= (?) AND Login_Time >= (?) AND Login_Time <=(?)", (d, d1, t, t1)) mysel = curs.execute( "SELECT * FROM LOGIN WHERE ID = 'Unrecognized' AND Login_Date >= (?) AND Login_Date <= (?) AND Login_Time >= (?) AND Login_Time <=(?)", (d, d1, t, t1)) # col_names = [cn[0] for cn in curs.description] # str(col_names) # rows = curs.fetchmany() # x = PrettyTable(col_names) # x.align[col_names[1]] = "l" # x.align[col_names[2]] = "r" # x.padding_width = 1 # for row in rows: # add_row(row) # print(row) # print(x) # tabstring = x.get_string() # worksheet.write(tabstring) sheet.cell(row=1, column=1).value = "ID" sheet.cell(row=1, column=2).value = "Name" sheet.cell(row=1, column=3).value = "Login_Time" sheet.cell(row=1, column=4).value = "Login_Date" sheet.cell(row=1, column=5).value = "File Path" sheet.cell(row=1, column=7).value = "IMAGE" for i, row in enumerate(mysel): for j, it in enumerate(row): sheet.cell(row=i + 2, column=j + 1).value = it wb.save("F:\image recognition\LogSheet\Log_sheet.xlsx") # Get workbook active sheet # from the active attribute sheet = wb.active # print(df.Login_Time) sheet.cell(row=1, column=1).value = "ID" sheet.cell(row=1, column=2).value = "Name" sheet.cell(row=1, column=3).value = "Login_Time" sheet.cell(row=1, column=4).value = "Login_Date" sheet.cell(row=1, column=5).value = "File Path" sheet.cell(row=1, column=7).value = "IMAGE" df = pd.read_excel( "F:\image recognition\LogSheet\Log_sheet.xlsx") end = len(df) for i in range(0, end): sp = df.iloc[i, 2] cleanString = re.sub('\W+', '', sp) sheet.cell( row=i + 2, column=5 ).value = 'F:\image recognition\\Unrecognized\Intruder.' + str( cleanString) + '.jpg' sheet.cell(row=i + 2, column=6).value = 'INTRUDER' + str(i + 1) a = 'E' + str(i + 2) b = 'F' + str(i + 2) sheet.cell( row=i + 2, column=7 ).value = '=HYPERLINK(' + str(a) + ',' + str(b) + ')' for i, row in enumerate(mysel): for j, it in enumerate(row): sheet.cell(row=i + 2, column=j + 1).value = it wb.save("F:\image recognition\LogSheet\Log_sheet.xlsx") # output = open("unrecognized_details.txt", "w") # output.write("Login Data") # output.write(tabstring) # output.close() conn.commit() conn.close() d = cal.selection_get() d1 = cal1.selection_get() t = tent.get() t1 = tent1.get() genrate(d, d1, t, t1) Label(top, text="Generate Log Sheet", bg="blue", width="100", height="2", font=("Calibri", 13)).grid(columnspan=3, row=0) Label(top, text="DATE FROM :", bg="blue", font=("Calibri", 13)).grid(pady=10, row=1, column=0) cal = Calendar(top, font="Arial 14", selectmode='day') cal.grid(pady=10, row=2, padx=10, column=0) # ttk.Button(top, text="ok", command=print_sel).pack() Label(top, text="DATE TO :", bg="blue", font=("Calibri", 13)).grid(pady=10, row=1, column=2) cal1 = Calendar(top, font="Arial 14", selectmode='day') cal1.grid(pady=10, padx=10, row=2, column=2) Label(top, text="TIME FROM :", bg="blue", font=("Calibri", 13)).grid(pady=10, column=0, row=3) tent = Entry(top, font=('Ariel', 10), bg='light blue', bd=4) tent.grid(pady=10, column=0, row=4, padx=10) Label(top, text="TIME TO :", bg="blue", font=("Calibri", 13)).grid(pady=10, column=2, row=3) tent1 = Entry(top, font=('Ariel', 10), bg='light blue', bd=4) tent1.grid(pady=10, column=2, row=4, padx=10) # ttk.Button(top, text="ok", command=print_sel).pack() Button(top, text='Generate', width=7, height=1, bd=4, command=gen, font=("Calibri", 13, 'bold')).grid(column=1, row=5, pady=10) except: print('INFO...[Something went wrong]')
class App: ''' Interfaz básica del módulo tkinter y se agrega el widget tkcalendar.Calendar Más info en https://pypi.org/project/tkcalendar/ ''' def __init__(self): # Interfaz base de tkinter. # Más información en https://docs.python.org/3/library/tkinter.html self.root = tk.Tk() # método que se ejecuta al cerrar la ventana self.root.protocol("WM_DELETE_WINDOW", self.exit) self.root.withdraw() self.root.title('Calendario Personal') # Widget para mostrar calendario self.top = tk.Toplevel(self.root) self.top.protocol("WM_DELETE_WINDOW", self.exit) # es necesario instalar el módulo tkcalendar # python -m pip install tkcalendar # más info en https://pypi.org/project/tkcalendar/ self.cal = Calendar(self.top, font="Arial 10", background='darkblue', foreground='white', selectmode='day') self.cal.grid() # Boton para ver registros del día ttk.Button( self.top, text="Ver eventos", # Como command recibe el nombre de un método, no nos permite pasar argumentos. # Para ello, utilizamos lambda, que crea una función anónima. # Puede recibir varios parámetros pero puede ejecutar una sola expresión/acción. # Más documentación en https://docs.python.org/3/reference/expressions.html#lambda command=lambda: ListView( root=self.root, day=self.cal.get_date() )).grid(sticky="ew", pady=5, padx=5) # Botón para crear un nuevo evento ttk.Button( self.top, text="Nuevo evento", command=lambda: EventoForm( self.root, )).grid(sticky="ew", pady=5, padx=5) # Loop para mostrar la ventana sin cerrarse self.root.mainloop() def exit(self): """ Cierr conexión a base de datos y todas las interfaces gráficas """ # Cierra conexión a la base de datos ce.close_conn(ce.DB_CONN) # Cierra ventana de Calendario (widget) self.top.quit() self.top.destroy() # Cierra ventana principal self.root.quit() self.root.destroy() # Cierra el intérprete de Python sys.exit()