class App(QWidget): def __init__(self): super().__init__() self.table = QTableWidget(self) self.db = QSqlDatabase.addDatabase("QSQLITE") self.label1 = QLabel(self) self.label2 = QLabel(self) self.label3 = QLabel(self) self.button1 = QPushButton("Search", self) self.list = QComboBox(self) self.initUI() def initUI(self): self.setWindowTitle("User Panel") self.move(10, 10) self.resize(300, 500) self.db.setDatabaseName("./DataBase/database.db") self.table.close() self.set_labels() self.set_buttons() self.choose_city() def set_labels(self): self.label1.move(10, 10) self.label1.setText("Choose city: ") self.label2.move(10, 30) self.label2.setText("Start date: ") self.label3.move(10, 50) self.label3.setText("End date: ") def set_buttons(self): self.button1.move(10, 80) self.button1.clicked.connect(self.show_results) def choose_city(self): ok = self.db.open() self.list.move(90, 6) city_list =[] question = "SELECT name FROM city" query = QSqlQuery(question) while query.next(): city_list.append(str(query.value(0))) print("City List", city_list) self.list.addItems(city_list) def show_results(self): self.table.move(10, 120) self.table.resize(280, 300) self.table.show()
class agenda(QtWidgets.QMainWindow): def __init__(self): super(agenda, self).__init__() uic.loadUi('AGENDA.ui', self) self.show() #tamanho da tela startSize = QtCore.QSize(1080, 720) self.resize(startSize) self.setMinimumSize(startSize) ############################3# #icone self.setWindowIcon(QIcon("icon/agenda.ico")) self.setWindowTitle("OFF SISTEMA")#NOME SISTEMA self.ver_usuario_cliente() ######################gif##################### self.movie = QMovie("icon/giphy.gif") self.label_esquerdogif.setMovie(self.movie) self.label_direitogif.setMovie(self.movie) self.movie.start() #self.movie.stop() ################################# #CREATE BOTAO GERA PDF self.pushButton_gera_odf.clicked.connect(self.gera_pdf) ################tabela#cidade########### self.sistema_te = QTableWidget(self) self.sistema_te.setHorizontalHeaderLabels(["Header-1"]) self.sistema_te.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.sistema_te.move(850, 120) self.sistema_te.setColumnCount(1) self.sistema_te.setMinimumWidth(200) self.sistema_te.setMinimumHeight(500) self.sistema_te.verticalHeader().setVisible(False) ####################################### #########complete cidaes########### self.mostra_bairro()#mostra bairros self.preencher_dados() self.ESTADOS_UF()#ver os estados banco de dados self.mostra_cidades()#ver cidades banco de dados ###########cadsatro de clientes########### self._2lineEdit_cpf.setInputMask("000.000.000.00;_")#cpf self._8lineEdit_celular_tel.setValidator(QtGui.QIntValidator())#celular self._7lineEdit_data_nascimento.setInputMask("00/00/0000")#dada nascimento self._3lineEdit_idade.setValidator(QtGui.QIntValidator())#idade self._5lineEdit_numero.setValidator(QtGui.QIntValidator())#numero #cadastro cliente##################################### self.Button_salva_2.clicked.connect(self.cadastro_cliente) self.Button_abrir_2.clicked.connect(self.ver_cidades)#ver cidades self.altera_clientes.clicked.connect(self.pesquisar_clientes)#altera clientes #tela clientes cadastrado############## self.volt_apagacliente.clicked.connect(self.apaga_clientes)#apagar cleintes #pagina atenidmento################################################ #create alerta self.checkBox.toggled.connect(self.check_alerta) #data time #self.dateEdit.dateChanged.connect(self.data)#data #self.timeEdit.timeChanged.connect(self.horas)#horas self.pushButton_novo.clicked.connect(self.chamar_cliente_teladado) self.pushButton_confirma.clicked.connect(self.horas) self.pushButton_confirma.clicked.connect(self.data) self.pushButton_confirma.clicked.connect(self.tipodetecnico) self.pushButton_confirma.clicked.connect(self.atendimneto) self.pushButton_confirma.clicked.connect(self.SelectPAciente)#selecionar paciente0, #self.lineEdit_procuraclientes.textChanged.connect(self.pesquisar_clientes)#pesquisar clientes #########combox self.comboxprofissao_t() #self.combo_atendimento.activated.connect(self.atendimneto) #self.combo_profissao.activated.connect(self.tipodetecnico) ######tecla atalha pagina######$$$$$$$$$$$ self.actionCadastro_atendimento.triggered.connect(lambda: self.stackedWidget.setCurrentWidget(self.atendimento)) self.actionCadastro_Client.triggered.connect(lambda: self.stackedWidget.setCurrentWidget(self.cadastrocliente))#Cadastro cliente self.actionMostra_Clientes.triggered.connect(lambda: self.stackedWidget.setCurrentWidget(self.telaclientes)) self.volt_cadastroclientes.clicked.connect(self.sistema2)#chama cadastro clientes self.bt_ver_clientes_2.clicked.connect(self.sistema_charma_botao_clientes)#ver clientes self.bt_link.clicked.connect(self.abri_zap)#chamar link whatsapp #PUXA DATA ATUALLLLL############# self.date = QtCore.QDate.currentDate() self.dateEdit.setDate(self.date) self.timeEdit13 = QtCore.QTime.currentTime() self.timeEdit.setTime(self.timeEdit13) #create pra chamar cliennte tela atendimento self.chamar_cliente_teladado()###chamar cliente self.chama_clientes.close() ##############fuçao teste #pra chama clientes########################################################################## def sistema_charma_botao_clientes(self): self.bt_ver_clientes_2==self.stackedWidget.setCurrentWidget(self.telaclientes) def sistema2(self): self.stackedWidget.setCurrentWidget(self.cadastrocliente) def abri_zap(self):#chamar link whatsapp buttonReply=QMessageBox.question(self, 'WHATSAPP LINK', "DESEJA DIRECIONAR WHATSAPP CLICKE EM HELP\n"+"\nSENAO DESEJA CLICKE EM NO", QMessageBox.No | QMessageBox.Help) if buttonReply==QMessageBox.Help: import webbrowser webbrowser.open(r'https://bityli.com/losoj') else: QMessageBox.about(self, "TITLE", "OBRIGADO VOLTE SEMPRE") def SelectPAciente(self,): a=self.busca_cliente_atendimento.text() self.listWidget.addItem(f'PACIENTE: {a} ') self.busca_cliente_atendimento.setText("") self.chama_clientes.close() def chamar_cliente_teladado(self): self.chama_clientes.show() self.ver_usuario_cliente() db = sqlite_db("agenda_bd.db") dados_lidos=db.pega_dados("SELECT nome FROM clientes") results = dados_lidos banco = [i[0] for i in results] completer = QCompleter(banco) self.busca_cliente_atendimento.setCompleter(completer) ############################################################### ########combobox###################### def atendimneto(self): a=str(self.combo_atendimento.currentText()) self.listWidget.addItem(a) def tipodetecnico(self): text = str(self.combo_profissao.currentText()) self.listWidget.addItem(f'Tecnico: {text} ') def comboxprofissao_t(self):#item da lista profissao=["","tecnico","analista","GERENTE"] lista=['offsistema.png','Agenda/icon/tecnico.png'] self.combo_profissao.addItems(profissao) self.combo_atendimento.addItems(profissao) self.combo_profissao.setItemIcon(1, QIcon(lista[0]))#colocar icons self.combo_profissao.setItemIcon(2, QIcon(lista[1])) self.combo_profissao.setItemIcon(3, QIcon(lista[0])) self.combo_atendimento.setItemIcon(1, QIcon(lista[0])) self.combo_atendimento.setItemIcon(2, QIcon(lista[0])) self.combo_atendimento.setItemIcon(3, QIcon(lista[0])) ###########combox######################## #data time def data(self):#dat data_atual =self.dateEdit.date() self.listWidget.addItem(('Dia {0}/ Mês {1}/ Ano {2} '.format(data_atual.day(), data_atual.month(), data_atual.year()))) def horas(self):#horas hora = self.timeEdit.time() self.listWidget.addItem(('Dados Cliente\n'+'Horas {0}:{1} Minutos'.format(hora.hour(),hora.minute()))) #salva############################### def salvar_Dados(self): text=self.listWidget_dados.selectedItems() for y in text: print(y.text()) def check_alerta(self,item):#alerta cliente agendado import time, sys bt=self.sender() buttonReply=QMessageBox.question(self, 'ALERTA', "CLIENTE ESPECIAL", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if buttonReply==QMessageBox.Yes: if bt.isChecked() == True: return else: print('Verdade') #######cadastro cliente#### def cadastro_cliente(self): db = sqlite_db("agenda_bd.db") cliente=str(self._1lineEdit_nome.text()) idade_idade=str(self._3lineEdit_idade.text()) cpf_cpf=str(self._2lineEdit_cpf.text()) email_email=str(self._9lineEdit_email.text()) end_endereco=str(self._4lineEdit_endereco.text()) numer_n=str(self._5lineEdit_numero.text()) cidade_cid=str(self._6lineEdit_cidade.text()) bairro_bairro=str(self._lineEdit_bairro.text()) completento_cop=str(self.lineEdit_complemento.text()) data_nc=str(self._7lineEdit_data_nascimento.text()) sexo_sexo = str(self.comboBox_sexo.currentText()) tb_telefone=str(self._8lineEdit_celular_tel.text()) estado_tb = str(self.comboBox_estados.currentText()) if (cliente==""or idade_idade=="" or cpf_cpf=="" or email_email==""or end_endereco=="" or numer_n==""or cidade_cid==""or bairro_bairro==""or completento_cop==""or data_nc==""or sexo_sexo==""or tb_telefone==""or estado_tb==""): return QMessageBox.about(self, "Title", "PREENCHAR OS DADOS") else: buttonReply=QMessageBox.question(self, 'CADASTRO CLIENTE', "DESEJA CADASTRA CLIENTE", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if buttonReply==QMessageBox.Yes: db.adicionar("INSERT INTO clientes (nome,idade,cpf,email,endereco,numero,cidade,bairro,complemento,data_n,sexo,telefone,estado)VALUES('{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}','{}')".format(cliente,idade_idade,cpf_cpf,email_email,end_endereco,numer_n,cidade_cid,bairro_bairro,completento_cop,data_nc,sexo_sexo,tb_telefone,estado_tb)) QMessageBox.about(self, "Title", "USUARIO CADASTRO COM SUCESSO") self.ver_usuario_cliente() ####################################################################################################### def ver_usuario_cliente(self): db = sqlite_db("agenda_bd.db") try: dados_lidos=db.pega_dados("SELECT * FROM clientes") self.tableWidget_clientes_3.setRowCount(0) self.tableWidget_clientes_3.resizeColumnToContents(0) for linha, dados in enumerate (dados_lidos): self.tableWidget_clientes_3.insertRow(linha) for coluna_n, dados in enumerate(dados): self.tableWidget_clientes_3.setItem(linha,coluna_n,QTableWidgetItem(str(dados))) except: print() ###################apaga clientes########### def apaga_clientes(self):#apaga cliente tela cadastro clientes buttonReply=QMessageBox.question(self, 'APAGAR CLIENTE', "DESEJA APAGA CLIENTE", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if buttonReply==QMessageBox.Yes: try: db = sqlite_db("agenda_bd.db") linha=self.tableWidget_clientes_3.currentRow() self.tableWidget_clientes_3.removeRow(linha) dados=db.pega_dados("SELECT id FROM clientes") valor_id = dados[linha][0] db.apaga("DELETE FROM clientes WHERE id=" + str(valor_id)) self.ver_usuario_cliente() except: QMessageBox.about(self, "Title", "CLIENTE APAGADO COM SUCESSO") QMessageBox.about(self, "Title", "CLIENTE APAGADO COM SUCESSO") self.ver_usuario_cliente() def pesquisar_clientes(self): pass def preencher_dados(self):#preencher dados telefone banco=['(69)','+5569','99s'] completer = QCompleter(banco) self._8lineEdit_celular_tel.setCompleter(completer) ####################################################################################################### def openfile(self):#abri texto filename = QFileDialog.getOpenFileName(self) self.lb1.setText(filename[0]) ################REFERENTECIDADES######################ESTADOS####################$$$$$ def ver_cidades(self): buttonReply=QMessageBox.question(self, 'CIDADES', "DESEJA VER CIDADES", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if buttonReply==QMessageBox.Yes: db = sqlite_db("agenda_bd.db") try: dados_lidos=db.pega_dados("SELECT * FROM cidades") for linha, dados in enumerate (dados_lidos): self.sistema_te.insertRow(linha) for coluna_n, dados in enumerate(dados): self.sistema_te.setItem(linha,coluna_n,QTableWidgetItem(str(dados))) self.sistema_te.show() except: print('error') if buttonReply==QMessageBox.No: self.sistema_te.close() def ESTADOS_UF(self):#mostra os estados db = sqlite_db("agenda_bd.db") dados_lidos=db.pega_dados(" SELECT uf FROM estados ") banco = [i[0] for i in dados_lidos] self.comboBox_estados.addItems(banco) def mostra_cidades(self):#mostra cidades db = sqlite_db("agenda_bd.db") dados_lidos=db.pega_dados(" SELECT cidade FROM cidades") banco = [i[0] for i in dados_lidos] completer = QCompleter(banco) self._6lineEdit_cidade.setCompleter(completer) def mostra_bairro(self):#mostra cidades db = sqlite_db("agenda_bd.db") dados_lidos=db.pega_dados(" SELECT bairro FROM bairros") banco = [i[0] for i in dados_lidos] completer = QCompleter(banco) self._lineEdit_bairro.setCompleter(completer) def procura_cliente(self): b=self.linewillow2.text() print(b) ##################################### #create gera pdf def gera_pdf(self): row = self.tableWidget_clientes_3.currentRow() print(row) db = sqlite_db("agenda_bd.db") dados_lidos=db.pega_dados("SELECT *FROM clientes WHERE id={}".format(row)) y = 0 import time data_atual=time.strftime('%d-%m-%Y horas: %H:%M:%S', time.localtime()) logo = ImageReader('offsistema.png')#logo pdf = canvas.Canvas('{}.pdf'.format("OFF PACIENTES")) pdf.drawImage(logo, 400, 700,5*cm, 5*cm)#logo pdf.drawString(35,724,'='*20+ 'Dados cliente '+'='*20) pdf.drawString(35,750,'='*20+'OFF SISTEMA'+'='*20) pdf.drawString(10,5, f'Data: {data_atual}') pdf.drawString(30, 700, 'ID') pdf.drawString(30, 680, 'Nome: ')#nome pdf.drawString(250, 680, 'Data Nascimento : ')#NSACIMENTO pdf.drawString(430, 680, 'Idade: ')#idade pdf.drawString(30, 660, 'CPF: ')#cpf pdf.drawString(150, 660, 'Sexo: ')#SEXO pdf.drawString(240, 660, 'Email: ')# pdf.drawString(445, 660, 'Telefone: ')#telefone pdf.drawString(30, 640, 'Endereço: ')#ENDEREÇO pdf.drawString(270, 640, 'Nº: ')#NUMERO pdf.drawString(330, 640, 'Cidade: ')#CIDADE pdf.drawString(410, 640, 'Bairro: ')#BAIRRO pdf.drawString(515, 640, 'UF: ')#BAIRRO pdf.drawString(30, 620, 'Complemento: ')#COMPLEMENTO pdf.line(30,675,580,675)#linha cliente pdf.line(30,655,580,655)#enederço A telefone pdf.line(30,635,580,635)#linha cliente pdf.line(30,615,580,615)#complementos for i in range(0, len(dados_lidos)): y = y + 50 pdf.drawString(50, 750 - y, str(dados_lidos[i][0]))#id pdf.drawString(75, 730 - y, str(dados_lidos[i][1]))#NOME pdf.drawString(350, 730 - y, str(dados_lidos[i][10]))#DATA DE NASCIMENTO pdf.drawString(480, 730 - y, str(dados_lidos[i][2]))#IDADE pdf.drawString(60, 710 - y, str(dados_lidos[i][3]))#CPF pdf.drawString(180, 710 - y, str(dados_lidos[i][11]))#SEXO pdf.drawString(275, 710 - y, str(dados_lidos[i][4]))#EMAIL pdf.drawString(500, 710 - y, str(dados_lidos[i][12]))#TELEFONE pdf.drawString(95, 690 - y, str(dados_lidos[i][5]))#ENDEREÇO### pdf.drawString(290, 690 - y, str(dados_lidos[i][6]))#NUMERO##3 pdf.drawString(375, 690 - y, str(dados_lidos[i][7]))#CIDADE pdf.drawString(450, 690 - y, str(dados_lidos[i][8]))#BAIRRO pdf.drawString(540, 690 - y, str(dados_lidos[i][13]))#estado pdf.drawString(110, 670 - y, str(dados_lidos[i][9]))#COMPLEMENTO # background: url("D:/pytho willow/agenda/icon/LOGO FUNDO.png") no-repeat; pdf.save() QMessageBox.about(self, "PDF", "O PDF FOI GERADO COM SUCESSO") print('O PDF FOI GERADO COM SUCESSO')
class App(QWidget): def __init__(self): super().__init__() self.table = QTableWidget(self) self.db = QSqlDatabase.addDatabase("QSQLITE") self.label1 = QLabel(self) self.label2 = QLabel(self) self.button1 = QPushButton("Show", self) self.button2 = QPushButton("Delete", self) self.button3 = QPushButton("Start Editing", self) self.button4 = QPushButton("End Editing", self) self.cb1 = QComboBox(self) self.cb2 = QComboBox(self) self.initUI() def initUI(self): self.setWindowTitle("Admin Panel") self.move(10, 10) self.resize(820, 500) self.db.setDatabaseName("./DataBase/database.db") self.set_labels() self.set_buttons() self.table.close() self.choose_table() def set_labels(self): self.label1.move(14, 14) self.label1.setText("Choose table: ") self.label2.move(150, 14) self.label2.setText("Order by: ") def set_buttons(self): self.button1.move(300, 8) self.button1.clicked.connect(self.show_table) self.button2.move(10, 350) self.button2.clicked.connect(self.deleting) self.button3.move(100, 350) self.button3.clicked.connect(self.start_updating) self.button4.move(200, 350) self.button4.clicked.connect(self.stop_updating) def start_updating(self): self.table.itemChanged.connect(self.updating) def stop_updating(self): self.table.itemChanged.connect(self.updating) #powinno być zatrzymanie funkcji aktualizującej dane def choose_table(self): self.cb1.move(90, 10) self.cb2.move(210, 10) self.cb1.addItems(["city", "client", "flat", "rent"]) self.cb1.currentIndexChanged.connect(self.update_cb2) def update_cb2(self): ok = self.db.open() if self.cb1.currentText() == "city": columns = ["id_city", "name", "zip_code"] if self.cb1.currentText() == "client": columns = [ "id_client", "nickname", "name", "surname", "id_number", "card_number" ] if self.cb1.currentText() == "flat": columns = [ "id_flat", "availability", "start_date", "end_date", "price", "number_of_rooms", "amount_of_people", "animals", "childs", "parking_space", "id_city" ] if self.cb1.currentText() == "rent": columns = [ "id_rent", "id_flat", "id_client", "start_date", "end_date" ] self.cb2.clear() self.cb2.addItems(columns) def show_table(self): self.table.move(10, 40) self.table.resize(800, 300) ok = self.db.open() if not ok: QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard) return False else: x = 0 question = "SELECT * FROM " + self.cb1.currentText( ) + " ORDER BY " + self.cb2.currentText() self.table.setRowCount(0) if self.cb1.currentText() == "city": self.table.setColumnCount(3) x = 3 self.table.setHorizontalHeaderLabels( ["ID_CITY", "NAME", "ZIP_CODE"]) if self.cb1.currentText() == "client": self.table.setColumnCount(6) x = 6 self.table.setHorizontalHeaderLabels([ "ID_CLIENT", "NICKNAME", "NAME", "SURNAME", "ID_NUMBER", "CARD_NUMBER" ]) if self.cb1.currentText() == "flat": self.table.setColumnCount(11) x = 11 self.table.setHorizontalHeaderLabels([ "ID_FLAT", "AVAILABILITY", "START_DATE", "END_DATE", "PRICE", "NUMBER_OF_ROOMS", "AMOUNT_OF_PEOPLE", "ANIMALS", "CHILDS", "PARKING_SPACE", "ID_CITY" ]) if self.cb1.currentText() == "rent": self.table.setColumnCount(5) x = 5 self.table.setHorizontalHeaderLabels([ "ID_RENT", "ID_FLAT", "ID_CLIENT", "START_DATE", "END_DATE" ]) row = 0 query = QSqlQuery(question) while query.next(): self.table.insertRow(row) if x >= 3: i0 = QTableWidgetItem(str(query.value(0))) self.table.setItem(row, 0, i0) i1 = QTableWidgetItem(str(query.value(1))) self.table.setItem(row, 1, i1) i2 = QTableWidgetItem(str(query.value(2))) self.table.setItem(row, 2, i2) if x >= 5: i3 = QTableWidgetItem(str(query.value(3))) self.table.setItem(row, 3, i3) i4 = QTableWidgetItem(str(query.value(4))) self.table.setItem(row, 4, i4) if x >= 6: i5 = QTableWidgetItem(str(query.value(5))) self.table.setItem(row, 5, i5) if x >= 11: i6 = QTableWidgetItem(str(query.value(6))) self.table.setItem(row, 6, i6) i7 = QTableWidgetItem(str(query.value(7))) self.table.setItem(row, 7, i7) i8 = QTableWidgetItem(str(query.value(8))) self.table.setItem(row, 8, i8) i9 = QTableWidgetItem(str(query.value(9))) self.table.setItem(row, 9, i9) i10 = QTableWidgetItem(str(query.value(10))) self.table.setItem(row, 10, i10) row = row + 1 self.table.show() self.db.close() return True def updating(self): ok = self.db.open() if not ok: QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard) return False else: column = self.table.currentColumn() row = self.table.currentRow() if column < 0 or row < 0: return False id = self.table.item(row, 0).text() value = self.table.currentItem().text() if self.cb1.currentText() == "city": columns = ["id_city", "name", "zip_code"] if self.cb1.currentText() == "client": columns = [ "id_client", "nickname", "name", "surname", "id_number", "card_number" ] if self.cb1.currentText() == "flat": columns = [ "id_flat", "availability", "start_date", "end_date", "price", "number_of_rooms", "amount_of_people", "animals", "childs", "parking_space", "id_city" ] if self.cb1.currentText() == "rent": columns = [ "id_rent", "id_flat", "id_client", "start_date", "end_date" ] query = QSqlQuery() question = "UPDATE " + self.cb1.currentText() + " SET " + columns[ column] + " = '" + value + "' WHERE " + columns[0] + " = " + id print(question) query.prepare(question) ok = query.exec_() if not ok: QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard) self.db.commit() self.db.close() column = -1 row = -1 return True def deleting(self): ok = self.db.open() if not ok: QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard) return False else: rows = self.table.selectionModel().selectedRows() index = [] if self.cb1.currentText() == "city": column = "id_city" if self.cb1.currentText() == "client": column = "id_client" if self.cb1.currentText() == "flat": column = "id_flat" if self.cb1.currentText() == "rent": column = "id_rent" for i in rows: index.append(i.row()) index.sort(reverse=True) for i in index: id = self.table.item(i, 0).text() self.table.removeRow(i) question = "DELETE FROM " + self.cb1.currentText( ) + " WHERE " + column + " = " + id print(question) query = QSqlQuery() query.prepare(question) ok = query.exec_() if not ok: QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard) self.db.commit() self.db.close() return True