def __init__(self): # instance into_db object self.db = Helper(host='', user='******', password='******', database='raspberrypi', port=3306) self.db.connect()
def __init__(self): # instance into_db object self.db = Helper(host='', user='******', password='******', database='monitoring_test', port=30106) self.db.connect()
def __init__(self, root): super().__init__(root) self.helper = Helper() self.root = root root.attributes('-zoomed', True) root.title('Car manager') root.iconphoto(True, tk.PhotoImage(file='Resources/car_logo.png')) root.bind('<Control-x>', self.close_app) root.columnconfigure(1, weight=1) root.rowconfigure(2, weight=1) self.create_widgets() self.show_cars()
def __init__(self, root, parent): self.top_level = tk.Toplevel(root) self.helper = Helper() self.parent = parent x = self.top_level.winfo_screenwidth() y = self.top_level.winfo_screenheight() geometry = '+{}+{}'.format(int((x / 2) - 100), int((y / 2) - 100)) size = self.top_level.geometry(geometry) self.top_level.title('Add car') self.top_level.grab_set() label_make = tk.Label(self.top_level, text='Make: ', font=12, padx=20, pady=10).grid(row=0, column=0) label_model = tk.Label(self.top_level, text='Model: ', font=12, padx=20, pady=10).grid(row=1, column=0) label_year = tk.Label(self.top_level, text='Year: ', font=12, padx=20, pady=10).grid(row=2, column=0) label_vrn = tk.Label(self.top_level, text='VRN: ', font=12, padx=20, pady=10).grid(row=3, column=0) label_vin = tk.Label(self.top_level, text='VIN: ', font=12, padx=20, pady=10).grid(row=4, column=0) self.make_sv = tk.StringVar() self.model_sv = tk.StringVar() self.year_sv = tk.StringVar() self.vrn_sv = tk.StringVar() self.vin_sv = tk.StringVar() self.info_sv = tk.StringVar() entry_make = tk.Entry( self.top_level, text=self.make_sv) entry_make.focus_set() entry_make.grid(row=0, column=1) entry_model = tk.Entry( self.top_level, text=self.model_sv).grid(row=1, column=1) entry_year = tk.Entry( self.top_level, text=self.year_sv).grid(row=2, column=1) entry_vrn = tk.Entry( self.top_level, text=self.vrn_sv).grid(row=3, column=1) entry_vin = tk.Entry( self.top_level, text=self.vin_sv).grid(row=4, column=1) info_label = tk.Label(self.top_level, textvariable=self.info_sv, font=12, padx=10, pady=10, fg='red').grid(row=5, column=0, columnspan=2) save_button = tk.Button(self.top_level, text='Save', command=self.save_new_car) save_button.bind('<Return>', self.save_new_car) save_button.grid(row=6, column=1, sticky='W', padx=10) cancel_button = tk.Button(self.top_level, text='Cancel', command=self.top_level.destroy) cancel_button.grid(row=6, column=1, sticky='W', padx=70) cancel_button.bind('<Return>', self.top_level.destroy)
def __init__(self, root, car): self.top_level = tk.Toplevel(root) self.root = root self.top_level.title('Repairs') self.top_level.grab_set() self.car = car self.helper = Helper() x = self.top_level.winfo_screenwidth() y = self.top_level.winfo_screenheight() geometry = '+{}+{}'.format(int((x / 2) - 150), int((y / 2) - 150)) size = self.top_level.geometry(geometry) toolbox_frame = tk.Frame(self.top_level) toolbox_frame.grid(column=0, row=0, sticky='W') self.add_repair_img = tk.PhotoImage(file='Resources/add_repair.gif') add_repair_button = tk.Button(toolbox_frame, image=self.add_repair_img, command=self.add_repair) add_repair_button.grid(column=0, row=0, sticky='W') add_repair_button.bind('<Return>', self.add_repair) add_repair_button.bind('<KP_Enter>', self.add_repair) if car.sold: add_repair_button.config(state='disabled') col_headers = ('No', 'Date', 'Description') self.repairs_tv = ttk.Treeview(self.top_level, columns=col_headers, show='headings', selectmode='none') self.repairs_tv.tag_configure('c1', background='ivory2') self.repairs_tv.tag_configure('c2', background='ivory3') for i, col in enumerate(col_headers): self.repairs_tv.heading(col, text=col) self.repairs_tv.column(col, anchor='center') if i == 0: self.repairs_tv.column(col, width=50, stretch='NO') self.repairs_tv.grid(column=0, row=2, sticky='NSWE') scrollbar = tk.Scrollbar(self.top_level, command=self.repairs_tv.yview) scrollbar.grid(column=1, row=2, sticky='NS') self.show_repairs()
class Motor(): def __init__(self): # instance into_db object self.db = Helper(host='', user='******', password='******', database='raspberrypi', port=3306) self.db.connect() def insert_data(self, data_dict): # insert data into database try: # U, I, T, R for i in range(4): sql = "INSERT INTO {}(crt_time, value) VALUES('{}', '{}')"\ .format(data_dict["order"][i], data_dict["time"], data_dict["data"][i]) self.db.insert(sql) # Vibration interval = int(1000 / len(data_dict["Vibration"])) print(interval) for i in range(len(data_dict["Vibration"])): vib_time = data_dict["time"] + '.' + str(interval * i) sql1 = "INSERT INTO Vibration(crt_time, value) VALUES('{}', '{}')"\ .format(vib_time, data_dict["Vibration"][i]) self.db.insert(sql1) except: print('no data')
class Motor(): def __init__(self): # instance into_db object self.db = Helper(host='', user='******', password='******', database='monitoring_test', port=30106) self.db.connect() # reconnect to database def reconn_db(self): try: self.db.conn.ping() except: self.db.connect() def insert_data(self, data_dict): self.reconn_db() # insert data into database try: serial_number = data_dict.pop('serial_number') create_time = data_dict.pop('create_time') # insert data into every table for sub_name in data_dict.keys(): table_name = serial_number + '_' + sub_name value_list = data_dict[sub_name].split('/') insert_datalist = [] for value in value_list: data_tuple = (create_time, value) insert_datalist.append(data_tuple) sql = "INSERT INTO monitoring_test.{}(create_time, value) VALUES(%s, %s)".format( table_name) self.db.insert_many(sql, insert_datalist) #for value in value_list: # sql = "INSERT INTO monitoring_Spike.{}(create_time, value) VALUES('{}', '{}')"\ # .format(table_name, create_time, value) # self.db.insert(sql) except: logging.error('no data')
class CarManager(tk.Frame): def __init__(self, root): super().__init__(root) self.helper = Helper() self.root = root root.attributes('-zoomed', True) root.title('Car manager') root.iconphoto(True, tk.PhotoImage(file='Resources/car_logo.png')) root.bind('<Control-x>', self.close_app) root.columnconfigure(1, weight=1) root.rowconfigure(2, weight=1) self.create_widgets() self.show_cars() def create_widgets(self): # create menu menubar = tk.Menu(self.root) self.root.config(menu=menubar) file_menu = tk.Menu(menubar, tearoff=0) file_menu.add_command(label='Exit', command=exit, accelerator="Ctrl+x") menubar.add_cascade(label="File", menu=file_menu) # create toolbar tbar_frame = tk.Frame(root, height=10) tbar_frame.grid(row=0, column=0) self.add_car_img = tk.PhotoImage(file='Resources/add_car.gif') self.remove_car_img = tk.PhotoImage(file='Resources/remove_car.gif') self.repairs_img = tk.PhotoImage(file='Resources/repairs.gif') self.sold_img = tk.PhotoImage(file='Resources/sold.gif') add_car_button = tk.Button(tbar_frame, image=self.add_car_img, command=self.add_car).grid(row=0, column=0, sticky='W') del_car_button = tk.Button(tbar_frame, image=self.remove_car_img, command=self.del_car).grid(row=0, column=0, sticky='W', padx=30) repairs_button = tk.Button(tbar_frame, image=self.repairs_img, command=self.show_repairs).grid(row=0, column=0, sticky='W', padx=60) sold_button = tk.Button(tbar_frame, image=self.sold_img, command=self.sell_car).grid(row=0, column=0, sticky='W', padx=90) # create search entry self.search_variable = tk.StringVar() self.search_entry = tk.Entry(root, textvariable=self.search_variable) self.search_entry.config(fg='grey') # search_variable.trace("w", callback) self.search_variable.set("Search car by VRN") self.search_entry.bind('<FocusIn>', self.on_entry_in) self.search_entry.bind('<FocusOut>', self.on_entry_out) self.search_entry.bind('<Return>', self.on_entry_return) self.search_entry.bind('<KP_Enter>', self.on_entry_return) self.search_entry.grid(row=0, column=1, sticky='E', ipadx=20) # create TreeView with Scrollbar col_headers = ('No', 'Make', 'Model', 'Year', 'VRN', 'VIN', 'Sold') self.car_tview = ttk.Treeview(self.root, columns=col_headers, show='headings', selectmode='browse') self.car_tview.columnconfigure(0, weight=1) self.car_tview.rowconfigure(0, weight=1) # set column headers for i, col in enumerate(col_headers): self.car_tview.heading(col, text=col) self.car_tview.column(col, anchor='center') if i == 0: self.car_tview.column(col, width=50, stretch='NO') self.car_tview.grid(row=2, column=0, columnspan=2, sticky='NSWE') scrollbar = tk.Scrollbar(self.root, command=self.car_tview.yview) scrollbar.grid(column=3, row=2, sticky='NS') def close_app(self, event): result = tk.messagebox.askyesno('Exit', 'Close application?') if result: self.root.destroy() def show_cars(self): all_cars = self.helper.show_all_cars() self.car_tview.delete(*self.car_tview.get_children()) for i, car in enumerate(all_cars, start=1): car = list(car) car.insert(0, i) if i % 2: self.car_tview.insert('', 'end', values=car, tag='c2') else: self.car_tview.insert('', 'end', values=car, tag='c1') self.car_tview.tag_configure('c1', background='ivory3') self.car_tview.tag_configure('c2', background='ivory2') def __get_car_from_selection(self): selected_item = self.car_tview.focus() if selected_item == '': messagebox.showinfo('Information', 'No item selected') else: selection_dict = self.car_tview.item(selected_item) selection = selection_dict.get('values') i, *args = selection car = Car.from_list(args) return car def add_car(self): add_car = NewCarWindow(self.root, self) def del_car(self): car = self.__get_car_from_selection() if car and messagebox.askyesno('Delete', 'Delete selected car?'): self.helper.del_car(car) self.show_cars() def show_repairs(self): car = self.__get_car_from_selection() if car: repairs = RepairsWindow(self.root, car) def sell_car(self): car = self.__get_car_from_selection() if car and car.sold: messagebox.showinfo('Information', 'Already marked as sold') elif car and messagebox.askyesno('Sell', 'Mark car as sold?'): self.helper.set_sold(car) self.show_cars() def on_entry_return(self, event): vrn = self.search_variable.get() if vrn == '': self.show_cars() else: car = self.helper.search_by_vrn(vrn) self.car_tview.delete(*self.car_tview.get_children()) if car: car = list(car) car.insert(0, 1) self.car_tview.insert('', 'end', values=car) def on_entry_in(self, event): self.search_entry.config(fg='black') self.search_variable.set('') def on_entry_out(self, event): self.search_entry.config(fg='grey') self.search_variable.set('Search car by VRN')
class RepairsWindow(): def __init__(self, root, car): self.top_level = tk.Toplevel(root) self.root = root self.top_level.title('Repairs') self.top_level.grab_set() self.car = car self.helper = Helper() x = self.top_level.winfo_screenwidth() y = self.top_level.winfo_screenheight() geometry = '+{}+{}'.format(int((x / 2) - 150), int((y / 2) - 150)) size = self.top_level.geometry(geometry) toolbox_frame = tk.Frame(self.top_level) toolbox_frame.grid(column=0, row=0, sticky='W') self.add_repair_img = tk.PhotoImage(file='Resources/add_repair.gif') add_repair_button = tk.Button(toolbox_frame, image=self.add_repair_img, command=self.add_repair) add_repair_button.grid(column=0, row=0, sticky='W') add_repair_button.bind('<Return>', self.add_repair) add_repair_button.bind('<KP_Enter>', self.add_repair) if car.sold: add_repair_button.config(state='disabled') col_headers = ('No', 'Date', 'Description') self.repairs_tv = ttk.Treeview(self.top_level, columns=col_headers, show='headings', selectmode='none') self.repairs_tv.tag_configure('c1', background='ivory2') self.repairs_tv.tag_configure('c2', background='ivory3') for i, col in enumerate(col_headers): self.repairs_tv.heading(col, text=col) self.repairs_tv.column(col, anchor='center') if i == 0: self.repairs_tv.column(col, width=50, stretch='NO') self.repairs_tv.grid(column=0, row=2, sticky='NSWE') scrollbar = tk.Scrollbar(self.top_level, command=self.repairs_tv.yview) scrollbar.grid(column=1, row=2, sticky='NS') self.show_repairs() def add_repair(self, event=None): self.add_repair_frame = tk.Frame(self.top_level) self.add_repair_frame.grid(column=0, row=1, pady=20, sticky='WE') date_label = tk.Label(self.add_repair_frame, text='Date:').grid(column=0, row=2) self.date_sv = tk.StringVar() self.date_entry = tk.Entry(self.add_repair_frame, text=self.date_sv) self.date_entry.focus_set() self.date_entry.grid(column=1, row=2, sticky='W') self.cal_img = tk.PhotoImage(file='Resources/calendar.gif') show_cal_btn = tk.Button(self.add_repair_frame, image=self.cal_img, command=self.show_cal, relief='flat').grid(column=1, row=2, sticky='W', padx=170) description_label = tk.Label(self.add_repair_frame, text='Description:').grid(column=0, row=3) self.description_sv = tk.StringVar() self.description_entry = tk.Entry(self.add_repair_frame, text=self.description_sv) self.description_entry.grid(column=1, row=3, ipadx=200) save_button = tk.Button(self.add_repair_frame, text='Save', command=self.save_repair) save_button.grid(column=1, row=4, pady=10, sticky='E') save_button.bind('<Return>', self.save_repair) save_button.bind('<KP_Enter>', self.save_repair) cancel_button = tk.Button(self.add_repair_frame, text='Cancel', command=self.cancel_repair) cancel_button.grid(column=1, row=4, sticky='E', padx=60) cancel_button.bind('<Return>', self.cancel_repair) cancel_button.bind('<KP_Enter>', self.cancel_repair) def cancel_repair(self, event=None): self.add_repair_frame.grid_remove() def save_repair(self, event=None): if self.date_sv.get() and self.description_sv.get(): self.helper.add_repair(self.car, self.date_sv.get(), self.description_sv.get()) self.show_repairs() self.add_repair_frame.grid_remove() def show_repairs(self): repairs = self.helper.show_repairs(self.car) self.repairs_tv.delete(*self.repairs_tv.get_children()) for i, repair in enumerate(repairs, start=1): repair = (i, repair[0], repair[2]) if i % 2: self.repairs_tv.insert('', 'end', values=repair, tag='c1') else: self.repairs_tv.insert('', 'end', values=repair, tag='c2') def show_cal(self, event=None): date_picker = DatePicker(self.top_level, self.date_entry, '%d-%m-%Y') self.description_entry.focus_set()