es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

getExistingDirectory queda atascado en tiempo de ejecución pero no en depurador.

En Python, estoy usando

“ `
QtWidgets.QFileDialog.getExistingDirectory


para llamar a la caja de diálogo de selección de directorios. Cuando ejecuto la GUI, se detiene cuando llamo esta línea. En el modo de depuración, se ejecuta perfectamente y rápidamente. El código es: `` ` importar tiempo importar numpy como np importar csv desde PyQt5 import QtCore, QtGui, QtWidgets de PyQt5.QtWidgets importar QApplication importar sys importar GUI class EdgeMeasuringApp(QtWidgets.QMainWindow, GUI.Ui_MainWindow): def __init__ (self, parent = None): super (EdgeMeasuringApp, self).__init__ (padre) self.setupUi (este) # ruta = QtWidgets.QFileDialog.getExistingDirectory (self, ' seleccionar directorio &#39 ;, directorio = ' C: \\ ') self.BrowseButton.clicked.connect(self.setPath) def setPath (self): ruta = QtWidgets.QFileDialog.getExistingDirectory (self, ' seleccionar directorio &#39 ;, directorio = ' C: \\ ') intentar: self.SaveToEdit.setText (ruta) excepto: self.StatusEdit.setText (' ¡Directorio no establecido! ') def principal(): app = QApplication (sys.argv) forma = EdgeMeasuringApp () forma.show () app.exec_ () si __name__ == '__main__&#39 ;: principal ()

La GUI en sí se genera en el diseñador de PyQt. Luego lo transformo en un archivo .py a través del comando CMD correspondiente.

El comando en gris en la initialización de la clase en realidad funciona, pero cuando lo pongo en alguna de las funciones en el código, obtengo el mismo comportamiento.

He intentado darle un directorio diferente para buscar, pero eso no parece ser el problema.

Usando Windows 10. Pycharm 2020.2.3. Python 3.8. PyQt5.15.4.

¿Qué podría causar un comportamiento tan peculiar?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una posible causa de este comportamiento podría ser que el ciclo de eventos no esté siendo ejecutado correctamente durante el tiempo de ejecución. En modo de depuración, este ciclo se ejecuta automáticamente, pero durante el tiempo de ejecución puede requerir una ejecución explícita para que aparezca el cuadro de diálogo de selección de directorio.

    Para solucionar este problema, puede intentar agregar la siguiente línea de código después de llamar a la función getExistingDirectory:

    QtCore.QCoreApplication.processEvents()

    Esto asegurará que el ciclo de eventos se ejecute y que el cuadro de diálogo aparezca sin que la interfaz gráfica de usuario se vuelva no receptiva.

    Además, asegúrese de que todas las dependencias necesarias estén instaladas correctamente y que no haya errores de sintaxis en el código. También puede intentar ejecutar el código en un entorno diferente para ver si el problema persiste.

Comments are closed.