Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Spanish
  4. Como hacer para llamar un QDialog y que este se resetee a sus valores originales?
Forum Updated to NodeBB v4.3 + New Features

Como hacer para llamar un QDialog y que este se resetee a sus valores originales?

Scheduled Pinned Locked Moved Unsolved Spanish
5 Posts 3 Posters 2.2k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    LJJT
    wrote on last edited by LJJT
    #1

    Tengo un QMainWindow desde el que llamo a un Qdialog, el problema es que utilizo el Qdialog para obtener datos, todo funciona bien cuando se utiliza por primera vez, pero al utilizarlo de nuevo, si no introduzco nuevos valores y simplemente lo cierro, me retorna los últimos valores retornados. Cuando lo llamos desde MainWindow lo hago así:

    self.dialog=primero.afiliacion()
    self.dialog.exec_()
    
    1 Reply Last reply
    0
    • juankiJ Offline
      juankiJ Offline
      juanki
      Moderators
      wrote on last edited by
      #2

      Hola

      Así de primeras se me ocurren dos posibles soluciones:

      Una, que cada vez que vas a pedir los datos crees el formulario y lo destruyas cuando lo cierras u obtienes los datos.

      Y la otra es que incluyas un método que limpie el formulario y lo llames justo después de obtener los datos.

      ¿Cual es mejor? Pues depende de cómo lo hagas, solo con las dos líneas de código que pusiste no se cual haría yo.

      Un saludo

      Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
      Procura escribir correctamente y sin faltas de ortografía.

      Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

      Pablo J. RoginaP L 2 Replies Last reply
      1
      • juankiJ juanki

        Hola

        Así de primeras se me ocurren dos posibles soluciones:

        Una, que cada vez que vas a pedir los datos crees el formulario y lo destruyas cuando lo cierras u obtienes los datos.

        Y la otra es que incluyas un método que limpie el formulario y lo llames justo después de obtener los datos.

        ¿Cual es mejor? Pues depende de cómo lo hagas, solo con las dos líneas de código que pusiste no se cual haría yo.

        Un saludo

        Pablo J. RoginaP Offline
        Pablo J. RoginaP Offline
        Pablo J. Rogina
        wrote on last edited by
        #3

        @LJJT como sugiere @juanki yo agregaría un método a mi QDialog para "limpiar" los datos. Una opción es llamarlo luego de cada exec() para no olvidarte, y cada vez que lo muestras nuevamente sabes que empieza "de cero"

        Upvote the answer(s) that helped you solve the issue
        Use "Topic Tools" button to mark your post as Solved
        Add screenshots via postimage.org
        Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

        1 Reply Last reply
        1
        • juankiJ juanki

          Hola

          Así de primeras se me ocurren dos posibles soluciones:

          Una, que cada vez que vas a pedir los datos crees el formulario y lo destruyas cuando lo cierras u obtienes los datos.

          Y la otra es que incluyas un método que limpie el formulario y lo llames justo después de obtener los datos.

          ¿Cual es mejor? Pues depende de cómo lo hagas, solo con las dos líneas de código que pusiste no se cual haría yo.

          Un saludo

          L Offline
          L Offline
          LJJT
          wrote on last edited by
          #4

          @juanki Muchas gracias por la respuesta, sin embargo como soy nueva en el tema no la entendí muy bien, te cuento de nuevo: tengo un archivo de python principal (principal) en el cual importo mi mainwindow (autorizaciones), con un botón llamo un qdialog (secundal), cuando es abierto la primera vez sin tomar valores y le doy click en cerrar, no sucede nada, pero si ya había llamado con anterioridad el qdialog(secundal) y oprimo cerrar, me retorna los valores seleccionados en la llamada inmediatamente anterior. El codigo que tengo es un poco extenso, pero voy a tratar de poner lo importante

          from autorizaciones_2 import Ui_MainWindow
          
          class Principal(QtGui.QMainWindow):
              def __init__(self):
                  QtGui.QWidget.__init__(self)
                  self.ventana = Ui_MainWindow()
                  self.ventana.setupUi(self)
          
          self.connect(self.ventana.pushButton_8,QtCore.SIGNAL('clicked()'),self.ingresar_servicios)
          
          def cups(ingresar_servicios):
                  resultado=[]
                  cod=''
                  desc=''
                  #toma lo que hay en texto para buscar servicios, ya sea por codigo o por palabra
                  codigo=self.ventana.lineEdit_13.text()
                  palabra=self.ventana.lineEdit_14.text()
                  # evalua si el codigo es vacio busca por palabra, si la palabra es vacia
                  #indica que no se puede generar la busqueda
                  if codigo!='':
                      consulta='SELECT * FROM cups WHERE id_cups='+str(codigo)
                      resp=apuntador.execute(consulta)
                      if resp!=0:               
                          for temp in apuntador:
                              resultado.append((temp[0],temp[1]))
                      else:
                          QtGui.QMessageBox.critical(self, 'Error','Codigo no encontrado', QtGui.QMessageBox.Ok)
                          self.ventana.lineEdit_13.clear()
                          self.ventana.lineEdit_14.clear()
                  elif palabra!='':
                      resultado=[]
                      consulta='SELECT * FROM cups WHERE descripcion like"%'+str(palabra)+'%"'
                      resp=apuntador.execute(consulta)
                      if resp!=0:
                          for temp in apuntador:
                              resultado.append((temp[0],temp[1]))
                      else:
                          QtGui.QMessageBox.critical(self, 'Error','Palabra clave no encontrada', QtGui.QMessageBox.Ok)
                          self.ventana.lineEdit_13.clear()
                          self.ventana.lineEdit_14.clear()
                  
                  else:
                      QtGui.QMessageBox.critical(self, 'Error','Digite codigo o palabra clave', QtGui.QMessageBox.Ok)
          
                  if resultado!=[]:
                      self.dialogo=secundal.buscar_cups(resultado,resp)
                      self.dialogo.exec_()
                      cod,desc=secundal.buscar_cups(resultado,resp).retorno()
                      print 'principal:',cod,unicode(desc)
                      if cod!='':                
                          self.ventana.lineEdit_13.clear()
                          self.ventana.lineEdit_14.clear()
                          fila=self.ventana.tableWidget.rowCount()
                          if e_ingresarservicios==1:
                              self.ventana.tableWidget.setItem(fila-1,0,QtGui.QTableWidgetItem(str(cod)))
                              self.ventana.tableWidget.setItem(fila-1,1,QtGui.QTableWidgetItem('0'))
                              self.ventana.tableWidget.setItem(fila-1,2,QtGui.QTableWidgetItem(unicode(desc)))
                              e_ingresarservicios=0
                          elif e_ingresarservicios==0:
                              self.ventana.tableWidget.insertRow(fila)            
                              self.ventana.tableWidget.setItem(fila,0,QtGui.QTableWidgetItem(str(cod)))
                              self.ventana.tableWidget.setItem(fila,1,QtGui.QTableWidgetItem('0'))
                              self.ventana.tableWidget.setItem(fila,2,QtGui.QTableWidgetItem(unicode(desc)))
          

          en el archivo de secundal tengo lo siguiente:

          import sys
          from busqueda_cups import Ui_Dialog
          from PyQt4 import QtCore, QtGui
          import os
          import MySQLdb
          
          ##----------------------------------------------------------------------------------------------------------
          id_consulta=''
          descripcion=''
          ##----------------------------------------------------------------------------------------------------------
          
          class buscar_cups(QtGui.QDialog):
          ##    def __init__(self):
          ##    def __init__(self,id_cups,descripcion,resultado,num_filas):
              def __init__(self,resultado,num_filas):
          ##        global seleccion
                  QtGui.QWidget.__init__(self)
                  self.ventana = Ui_Dialog()
                  self.ventana.setupUi(self)
          
                  self.ventana.tableWidget.setRowCount(num_filas)
                  for i in range(0,len(resultado)):
                      for j in range(0,2):
                          self.ventana.tableWidget.setItem(i,j,QtGui.QTableWidgetItem(str(resultado[i][j])))
                  self.connect(self.ventana.tableWidget,QtCore.SIGNAL('cellDoubleClicked (int,int)'),self.seleccion)
          ##        self.connect(self.ventana.tableWidget,QtCore.SIGNAL(' itemSelectionChanged ()'),self.seleccion)
          
              def seleccion(self):
                  global id_consulta,descripcion
                  id_consulta=''
                  descripcion=''
                  cod,desc=self.ventana.tableWidget.selectedItems()
                  id_consulta=cod.text()
                  descripcion=desc.text()
                  self.close()
          
              
              def retorno(self):
                  return id_consulta,descripcion
          
          1 Reply Last reply
          0
          • juankiJ Offline
            juankiJ Offline
            juanki
            Moderators
            wrote on last edited by
            #5

            Hola @LJJT

            Bueno, python y yo no nos llembamos muy bien, junto con javascript, son dos lenguejes que no me gustan nada.

            Así que no puedo ponerte un ejemplo, pero lo que tienes que hacer es dentro de tu clase secundal crear un método que se llame limpiar, por ejemplo, en que lo que haces es eliminar el contenido de todos los QLineEdit (o los controles que uses para pedir los datos al usuario) y lo llamas después de que hayas obtenido y procesado los datos que introdujo el usuario.

            Así, la próxima vez estarán vacíos para que el usuario los llene de nuevo.

            Un saludo

            Intenta explicar el problema lo más claro y detallado posible. Adjunta los errores y el código que creas da el error.
            Procura escribir correctamente y sin faltas de ortografía.

            Si la duda se solucionó, por favor, marca el tema como 'solucionado'.

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved