Foros Python
[PyQt5] NameError: name 'fileName' is not defined - Versión para impresión

+- Foros Python (https://foro.recursospython.com)
+-- Foro: Desarrollo (https://foro.recursospython.com/forumdisplay.php?fid=1)
+--- Foro: Aplicaciones de escritorio (https://foro.recursospython.com/forumdisplay.php?fid=4)
+--- Tema: [PyQt5] NameError: name 'fileName' is not defined (/showthread.php?tid=211)



[PyQt5] NameError: name 'fileName' is not defined - konniskatt - 11-09-2018

Estoy teniendo ese error, pero la variable está declarada anteriormente:
Código:
  1. def openFile(self):
  2.        fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie",
  3.                                                  QDir.homePath(), """Images (*.png *.jpeg *.jpg *.gif *.bmp)
  4.                                                                      All files (*)""")
  5.  
  6.        
  7.        if fileName != '':
  8.            self.mediaPlayer.setMedia(
  9.                QMediaContent(QUrl.fromLocalFile(fileName)))
  10.            """
  11.            self.playButton.setEnabled(True)
  12.            self.playAction.setEnabled(False)
  13.            self.chgresm.setEnabled(True)
  14.            """
  15.            self.effm.setEnabled(True)
  16.  
  17.  
  18.        fileName, fileExt = os.path.splitext(fileName)
Acá les dejo el código fuente: (está en un tar.gz ya que requiere de otros archivos para funcionar)
Código


RE: [PyQt5] NameError: name 'fileName' is not defined - Francisco - 11-09-2018

El mensaje que muestra Python en consola indica claramente que el error es en la línea 319:

  1. def legofy_eff(self):
  2. if os.name == "posix":
  3. os.system("python3 dependencies/legofy_linux.py %s %s" % (fileName, fileno))
  4.  
  5. elif os.name == "nt":
  6. os.system("dependencies/legofy.exe %s %s" % (fileName, fileno))


Efectivamente la variable no está definida en esa función.

Saludos


RE: [PyQt5] NameError: name 'fileName' is not defined - konniskatt - 11-09-2018

(11-09-2018, 01:11 AM)Francisco escribió: El mensaje que muestra Python en consola indica claramente que el error es en la línea 319:

  1.    def legofy_eff(self):
  2.        if os.name == "posix":
  3.            os.system("python3 dependencies/legofy_linux.py %s %s" % (fileName, fileno))
  4.  
  5.        elif os.name == "nt":
  6.            os.system("dependencies/legofy.exe %s %s" % (fileName, fileno))


Efectivamente la variable no está definida en esa función.

Saludos

No es eso, ya que si declaro la variable dentro de legofy_eff se va a borrar, la variable fileName es una que tiene el path del archivo abierto, y esta debe ser igual en todas las funciones, ya trate con global y aun no funciona.


RE: [PyQt5] NameError: name 'fileName' is not defined - Francisco - 12-09-2018

Para que la variable sea visible en todos los métodos de la clase tenés que definirla como self.fileName.

Te recomiendo este artículo para aclarar cuestiones básicas de la orientación a objetos: https://recursospython.com/guias-y-manuales/clases-y-orientacion-a-objetos/.


RE: [PyQt5] NameError: name 'fileName' is not defined - konniskatt - 13-09-2018

(12-09-2018, 02:29 PM)Francisco escribió: Para que la variable sea visible en todos los métodos de la clase tenés que definirla como self.fileName.

Te recomiendo este artículo para aclarar cuestiones básicas de la orientación a objetos: https://recursospython.com/guias-y-manuales/clases-y-orientacion-a-objetos/.

Gracias, pero como haría para sobreescribir una imagen guardada?
Por ejemplo, legofy a.png a.png, sin embargo, da PermissionError.
Se podría solucionar esto añadiendo un caracter al nombre del archivo de salida, pero te termina llenando la carpeta de archivos.


RE: [PyQt5] NameError: name 'fileName' is not defined - Francisco - 13-09-2018

Si la excepción es PermissionError es porque no tenés los permisos suficientes para ejecutar esa operación. La solución es ejecutar el programa con permisos de administrador.