class CadastroLeitora: def __init__(self, master): self.this = Toplevel(master) self.this.title("Cadastro") self.this.resizable(False, False) w = self.this.winfo_screenwidth() h = self.this.winfo_screenheight() x = (w - self.this.winfo_reqwidth()) / 2 y = (h - self.this.winfo_reqheight()) / 2 self.this.geometry("+%d+%d" % (x - 150, y - 150)) self.app = Application() self.leitoras_cadastradas = [] def build_window(self): """ :return: """ main_frame = Frame(self.this) main_frame.pack() lbl_nome = Label(main_frame, text="Nome para leitora:") lbl_nome.grid(row=2, column=0, columnspan=2, sticky='w') self.leitora = Entry(main_frame, width=15) self.leitora.grid(row=2, column=2, columnspan=2, padx=10, pady=5, sticky='w') lbl_ip = Label(main_frame, text="Ip de acesso:") lbl_ip.grid(row=3, column=0, columnspan=2, sticky='w') self.ip = Entry(main_frame, width=20) self.ip.grid(row=3, column=2, columnspan=2, padx=10, pady=5, sticky='w') lbl_porta = Label(main_frame, text="Porta:") lbl_porta.grid(row=4, column=0, columnspan=2, sticky='w') self.porta = Entry(main_frame, width=10) self.porta.grid(row=4, column=2, columnspan=2, padx=10, pady=5, sticky='w') lbl_antenas = Label(main_frame, text="Nº Antenas:") lbl_antenas.grid(row=5, column=0, columnspan=2, sticky='w') self.antenas = Spinbox(main_frame, width=3, from_=1, to=4) self.antenas.grid(row=5, column=2, columnspan=2, padx=10, pady=5, sticky='w') self.antenas.config(state='readonly') bt_cadastrar = Button(main_frame, width=10, text="Cadastrar", command=self.cadastar_leitora) bt_cadastrar.grid(row=10, column=0, padx=10, pady=10, sticky='w') bt_limpar = Button(main_frame, width=10, text="Limpar", command=self.clear_entries()) bt_limpar.grid(row=10, column=2, padx=10, pady=10, sticky='e') bt_cancelar = Button(main_frame, width=10, text="Cancelar", command=self.close_window) bt_cancelar.grid(row=10, column=4, padx=10, pady=10, sticky='e') self.tabela_leitoras = ttk.Treeview(main_frame, selectmode="browse", show='headings') ttk.Style().configure("Treeview", width=50) self.tabela_leitoras['columns'] = '1', '2', '3', '4' self.tabela_leitoras.column('#1', width='100') self.tabela_leitoras.heading('#1', text='Nome') self.tabela_leitoras.column('#2', width='200') self.tabela_leitoras.heading('#2', text='IP') self.tabela_leitoras.column('#3', width='100') self.tabela_leitoras.heading('#3', text='Porta') self.tabela_leitoras.column('#4', width='100') self.tabela_leitoras.heading('#4', text='Nº Antenas') self.tabela_leitoras.grid(row=6, column=0, columnspan=5, padx=5, pady=10) self.tabela_leitoras.bind('<Double-Button-1>', self.load_da_tabela) scroll_bar_tree_vertical = Scrollbar(main_frame, relief='flat') scroll_bar_tree_vertical.grid(row=6, column=6, sticky=('w', 'e', 'n', 's')) self.tabela_leitoras.config( yscrollcommand=scroll_bar_tree_vertical.set) scroll_bar_tree_vertical.config(command=self.tabela_leitoras.yview) self.popular_tabela() def cadastar_leitora(self): if len(self.leitora.get()) == 0 or len(self.ip.get()) == 0 or len( self.porta.get()) == 0: messagebox.showwarning( "Erro", "Antes, preencha todos os campos corretamente", parent=self.this) return nome = self.leitora.get() ip = self.ip.get() porta = self.porta.get() antenas = self.antenas.get() try: self.app.registrar_leitora(nome, ip, porta, antenas) except: op = messagebox.askyesno( "Erro", "Essa leitora já possui um registro, deseja atualizar?", parent=self.this) if op is True: self.app.atualizar_leitora(nome, ip, porta, antenas) else: self.clear_entries() return self.app.conf_antenas(ip, porta, int(antenas)) messagebox.showinfo("Cadastro", "Cadastro realizado com sucesso!", parent=self.this) self.popular_tabela() self.clear_entries() def popular_tabela(self): """ :return: """ if len(self.tabela_leitoras.get_children()) > 0: self.tabela_leitoras.delete(*self.tabela_leitoras.get_children()) self.leitoras_cadastradas = self.app.get_leitoras_registradas() row = 1 for registro in self.leitoras_cadastradas: self.tabela_leitoras.insert( "", row, iid=int(row), values=[registro[0], registro[1], registro[2], registro[3]]) row += 1 def load_da_tabela(self, event): """ :param event: :return: """ print(self.tabela_leitoras.selection()) index = int(self.tabela_leitoras.selection()[0]) - 1 carro = self.leitoras_cadastradas[index] self.leitora.delete(0, END) self.leitora.insert(0, carro[0]) self.ip.delete(0, END) self.ip.insert(0, carro[1]) self.porta.delete(0, END) self.porta.insert(0, carro[2]) def clear_entries(self): """ :return: """ self.leitora.delete(0, END) self.ip.delete(0, END) self.porta.delete(0, END) def open_window(self): self.build_window() self.this.mainloop() def close_window(self): self.this.destroy()