Estoy tratando de hacer mi primera interfaz en Python con Pyqt. Necesito saber cómo puedo vincular un boton, en este caso el de "Aceptar", para que me genere un archivo .txt con la información del formulario. Además, la interfaz cuenta con 2 opciones al final "pendiente" y "terminado", quería saber si el archivo .txt generado puede tener como nombre:
Pendiente 'descripción bitácora'
El ejemplo anterior es en el caso que haya seleccionado la opción "pendiente" y si, por ejemplo, en la descripción de la bitácora aparece: MT65, el archivo generado sería:
PendienteMT65.txt
Este archivo generado necesito que se vaya actualizando en el caso de pasar de "Pendiente" a "Terminado". Si se da el caso que se haya terminado, que cambie el nombre a:
TerminadoMT65.txt
El código que tengo es el siguiente:
import sys, refrom PyQt5.QtWidgets import QApplication, QDialog, QMessageBoxfrom PyQt5 import uicclass Dialogo (QDialog): def __init__ (self): QDialog.__init__(self) uic.loadUi("descripcion.ui", self) self.bitacora.textChanged.connect(self.validar_bitacora) self.turno.textChanged.connect(self.validar_turno) self.asesor.textChanged.connect(self.validar_asesor) self.item.textChanged.connect(self.validar_item) self.modelo.textChanged.connect(self.validar_modelo) self.identificacion.textChanged.connect(self.validar_identificacion) self.rig.textChanged.connect(self.validar_rig) self.horometro.textChanged.connect(self.validar_horometro) self.condicion.textChanged.connect(self.validar_condicion) self.orden.textChanged.connect(self.validar_orden) self.observacion.textChanged.connect(self.validar_observacion) self.boton.clicked.connect(self.validar_formulario) def validar_bitacora(self): bitacora = self.bitacora.text() validar = re.match ('^[a-z\sáéíóúàèìòùäëïöüñ]+$' , bitacora, re.I) if bitacora == "": self.bitacora.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.bitacora.setStyleSheet("border: 1px solid red;") return False else: self.bitacora.setStyleSheet("border: 1px solid green;") return True def validar_turno(self): turno = self.turno.text() validar = re.match ('^[a-z\sáéíóúàèìòùäëïöüñ]+$' , turno, re.I) if turno == "": self.turno.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.turno.setStyleSheet("border: 1px solid red;") return False else: self.turno.setStyleSheet("border: 1px solid green;") return True def validar_asesor(self): asesor = self.asesor.text() validar = re.match (('^[0-9a-zA-Z]+$') , asesor, re.I) if asesor == "": self.asesor.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.asesor.setStyleSheet("border: 1px solid red;") return False else: self.asesor.setStyleSheet("border: 1px solid green;") return True def validar_item(self): item = self.item.text() validar = re.match (('^[ 0-9]+$') , item) if item == "": self.item.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.item.setStyleSheet("border: 1px solid red;") return False else: self.item.setStyleSheet("border: 1px solid green;") return True def validar_modelo(self): modelo = self.modelo.text() validar = re.match (('^[0-9a-zA-Z]+$') , modelo, re.I) if modelo== "": self.modelo.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.modelo.setStyleSheet("border: 1px solid red;") return False else: self.modelo.setStyleSheet("border: 1px solid green;") return True def validar_identificacion(self): identificacion = self.identificacion.text() validar = re.match (('[0-9a-zA-Z]+$') , identificacion, re.I) if identificacion == "": self.identificacion.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.identificacion.setStyleSheet("border: 1px solid red;") return False else: self.identificacion.setStyleSheet("border: 1px solid green;") return True def validar_rig(self): rig = self.rig.text() validar = re.match(('^[ 0-9]+$'), rig) if rig == "": self.rig.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.rig.setStyleSheet("border: 1px solid red;") return False else: self.rig.setStyleSheet("border: 1px solid green;") return True def validar_horometro(self): horometro= self.horometro.text() validar = re.match (('^[ 0-9]+$') , horometro) if horometro== "": self.horometro.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.horometro.setStyleSheet("border: 1px solid red;") return False else: self.horometro.setStyleSheet("border: 1px solid green;") return True def validar_condicion(self): condicion = self.condicion.text() validar = re.match ('^[a-z\sáéíóúàèìòùäëïöüñ]+$' , condicion, re.I) if condicion == "": self.condicion.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.condicion.setStyleSheet("border: 1px solid red;") return False else: self.condicion.setStyleSheet("border: 1px solid green;") return True def validar_orden(self): orden = self.orden.text() validar = re.match (('^[ 0-9]+$') , orden) if orden== "": self.orden.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.orden.setStyleSheet("border: 1px solid red;") return False else: self.orden.setStyleSheet("border: 1px solid green;") return True def validar_observacion(self): observacion= self.observacion.text() validar = re.match (('^[0-9a-zA-Z]+$') ,observacion, re.I) if observacion == "": self.observacion.setStyleSheet("border: 1px solid yellow;") return False elif not validar: self.observacion.setStyleSheet("border: 1px solid red;") return False else: self.observacion.setStyleSheet("border: 1px solid green;") return True def validar_formulario (self): if self.validar_bitacora() and self.validar_turno() and self.validar_asesor() and self.validar_condicion() and self.validar_horometro() and self.validar_identificacion() and self.validar_item() and self. validar_modelo() and self.validar_observacion() and self.validar_oden() and validar_rig() : QMessageBox.information(self, "Formulario correcto", "Validación correcta", QMessageBox.Discard) else: QMessageBox.warning(self, "Formulario incorrecto", "validación incorrecta", QMessageBox.Discard)app = QApplication(sys.argv)dialogo = Dialogo()dialogo.show()app.exec_()