Foros Python

Versión completa: [PyQt5] NameError: name 'fileName' is not defined
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Estoy teniendo ese error, pero la variable está declarada anteriormente:
Código:
[code]
def openFile(self):
       fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie",
                                                 QDir.homePath(), """Images (*.png *.jpeg *.jpg *.gif *.bmp)
                                                                     All files (*)""")

       
       if fileName != '':
           self.mediaPlayer.setMedia(
               QMediaContent(QUrl.fromLocalFile(fileName)))
           """
           self.playButton.setEnabled(True)
           self.playAction.setEnabled(False)
           self.chgresm.setEnabled(True)
           """
           self.effm.setEnabled(True)


       fileName, fileExt = os.path.splitext(fileName)
[/code]
Acá les dejo el código fuente: (está en un tar.gz ya que requiere de otros archivos para funcionar)
Código
El mensaje que muestra Python en consola indica claramente que el error es en la línea 319:

Código:
def legofy_eff(self):
        if os.name == "posix":
            os.system("python3 dependencies/legofy_linux.py %s %s" % (fileName, fileno))

        elif os.name == "nt":
            os.system("dependencies/legofy.exe %s %s" % (fileName, fileno))

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

Saludos
(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:

Código:
   def legofy_eff(self):
       if os.name == "posix":
           os.system("python3 dependencies/legofy_linux.py %s %s" % (fileName, fileno))

       elif os.name == "nt":
           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.
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-manua...a-objetos/.
(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-manua...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.
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.