VERWENDEN DER ERGEBNISSE EINER SUCHE IN SQLITE3 UND PLATZIEREN IN EINER PYQT6-GUI [geschlossen]Python

Python-Programme
Anonymous
 VERWENDEN DER ERGEBNISSE EINER SUCHE IN SQLITE3 UND PLATZIEREN IN EINER PYQT6-GUI [geschlossen]

Post by Anonymous »

Ich verwende PyQt6, Sqlite3 und Python, um eine Desktop-App zu erstellen, aber es ist eine Sackgasse entstanden. Ich habe das folgende Fenster, in dem die Datenbank durchsucht und die benötigten Informationen in einem Qwitget abgelegt werden. Wenn ich darauf doppelklicke, sollten die gesuchten Informationen geöffnet und in einem neuen Fenster platziert werden, aber es bringt mir alles leer.

Code: Select all

`import sqlite3
import sys
from time import strftime
from PyQt6 import uic
from PyQt6.QtCore import Qt,pyqtSignal
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtGui import QPixmap
from PyQt6.QtWidgets import (
QApplication,
QCheckBox,
QComboBox,
QDateEdit,
QDateTimeEdit,
QDial,
QDoubleSpinBox,
QFontComboBox,
QLabel,
QLCDNumber,
QLineEdit,
QAbstractItemView,
QMainWindow,
QProgressBar,
QPushButton,
QRadioButton,
QSlider,
QSpinBox,
QTimeEdit,
QVBoxLayout,
QWidget,
QTableWidgetItem
)
from editar import EditarUi_Dialog
from logistica import Ui_LogisticaDialog
from logisticaform import  WindowPedidoLogEditar

class WindowLogisticsview(QtWidgets.QDialog, EditarUi_Dialog):
def __init__(self):
super().__init__()
self.setupUi(self)
self.label.setPixmap(QPixmap('UI/Logo Sirf.png'))
self.BtnLogBuscar.clicked.connect(self.searchPedLog)
self.tableWidget.clearContents()
self.procesador = WindowPedidoLogEditar()

def searchPedLog(self):

try:
Id_Ped = self.TxtLogpedido.text()
Pendiente = self.ChkPendiente.isChecked()
Despachado = self.ChkDespachado.isChecked()

condiciones = []
parametros = []

if Id_Ped:
condiciones.append("Id_Pedido LIKE ?")
parametros.append(f'%{Id_Ped}%')

if Pendiente:
condiciones.append("status = ?")
parametros.append("Pendiente")

if Despachado:
condiciones.append("status = ?")
parametros.append("Despachado")
#if todo:
#condiciones.append("Pendiente OR despachado = ?")
#parametros.append(1)

db = sqlite3.connect('dbsirf.db')
cursor = db.cursor()
query = "SELECT Id_Pedido, cliente, destino, status, CASE WHEN status = status THEN 'Pendiente' WHEN status = status THEN 'Despachado' ELSE 'todo' END FROM pedidosencab"
#params = (f'%{Id_Ped}%','%{pedido}%',)
if condiciones:
query += " WHERE " + " AND ".join(condiciones)
cursor = db.cursor()
cursor.execute(query, tuple(parametros))
ResultSearch = cursor.fetchall()

if ResultSearch:
mbox = QtWidgets.QMessageBox()
mbox.setIcon(QtWidgets.QMessageBox.Icon.Information)
mbox.setWindowTitle(" 🍑 Oops!")
mbox.setText("buscando[/b] ")[b]                mbox.exec()
self.datos = ResultSearch
self.tableWidget.setColumnCount(4)
self.tableWidget.setHorizontalHeaderLabels(['Pedido', 'cliente', 'destino', 'estado'])
self.tableWidget.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
self.tableWidget.setRowCount(len(self.datos))
for fila_index, fila_datos in enumerate(self.datos):
for col_index, dato in enumerate(fila_datos):
item = QTableWidgetItem(str(dato))
self.tableWidget.setItem(fila_index, col_index, item)

self.tableWidget.cellDoubleClicked.connect(self.editar_pedido)
else:
mbox = QtWidgets.QMessageBox()
mbox.setIcon(QtWidgets.QMessageBox.Icon.Critical)
mbox.setWindowTitle(" 🍑 Oops!")
mbox.setText("No se encontraron registros[/b] ")[b]                mbox.exec()
except sqlite3.Error as e:
mbox = QtWidgets.QMessageBox()
mbox.setIcon(QtWidgets.QMessageBox.Icon.Critical)
mbox.setWindowTitle(" 🍑 Oops!")
mbox.setText("Error al buscar el pedido: {}[/b]  ".format(e))[b]                mbox.exec()
finally:
cursor.close()
db.close()

def editar_pedido(self,row, col):
#print(f"Doble clic en la fila: {row}, columna: {col}")
row_content = []
for col in range(self.tableWidget.columnCount()):
cell_item = self.tableWidget.item(row, 0)
if cell_item is not None:
row_content.append(cell_item.text())
order_found = cell_item.text()
ped = WindowPedidoLogEditar()
self.procesador.load_order_details(order_found)
ped.exec()

else:
mbox = QtWidgets.QMessageBox()
mbox.setIcon(QtWidgets.QMessageBox.Icon.Critical)
mbox.setWindowTitle(" 🍑 Oops!")
mbox.setText("Error al buscar el pedido: {}[/b] ")
mbox.exec()
return order_found

if __name__ == '__main__':
app = QtWidgets.QApplication([QMainWindow])

window = WindowLogisticsview()
window.show()
sys.exit(app.exec())
`
Danach nutze ich das folgende Fenster, um die Ergebnisse den qlabels zuzuordnen, aber es erlaubt ihre Verwendung nicht

Code: Select all

`import sqlite3
import sys
from time import strftime
from PyQt6 import uic
from PyQt6.QtCore import Qt,pyqtSignal
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtGui import QPixmap
from PyQt6.QtWidgets import (
QApplication,
QCheckBox,
QComboBox,
QDateEdit,
QDateTimeEdit,
QDial,
QDoubleSpinBox,
QFontComboBox,
QLabel,
QLCDNumber,
QLineEdit,
QAbstractItemView,
QMainWindow,
)
from editar import EditarUi_Dialog
from logistica import Ui_LogisticaDialog

class WindowPedidoLogEditar(QtWidgets.QDialog, Ui_LogisticaDialog):

def __init__(self):
super().__init__()
self.setupUi(self)
self.label.setPixmap(QPixmap('UI/Logo Sirf.png'))
self.TxtPlaNumeroPedido.setText("")
self.LlenarFormularioLog()
def LlenarFormularioLog(self):
self.TxtLogCliente.setText("Hola Luis Vidal")

def load_order_details(self,order_found):
self.FinalNumber = str(order_found)
print(self.FinalNumber)
try:
db = sqlite3.connect('dbsirf.db')
cursor = db.cursor()
cursor.execute("SELECT * FROM pedidosencab WHERE id_Pedido = '{}'".format(order_found))
ResultSearch = cursor.fetchone()
print(ResultSearch)
self.TxtLogCliente.setText(cliente) #deberia traerme la información del Cliente
self.TxtLogPedido.setText(Id_Pedido)#deberia traerme la información del pedido
Valor
return ResultSearch

except sqlite3.Error as e:
print(f"Error de base de datos: {e}")
finally:
cursor.close()
db.close()

if __name__ == '__main__':
app = QtWidgets.QApplication([QMainWindow])

window = WindowPedidoLogEditar()
window.show()
sys.exit(app.exec())`
Ich weiß Ihre Hilfe zu schätzen

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post