llamar modulo dentro de una clase | Python3

Iniciado por Drakaris, 12 Septiembre 2020, 19:49 PM

0 Miembros y 1 Visitante están viendo este tema.

Drakaris

Buenas. Tengo un problema....

Tengo una clase, donde cuya clase estoy llamando a la funcion OS_system(), importado del paquete ' init'
Código (python) [Seleccionar]

from init import *
class notification:
       # [CODE]
def popup(self, title, type_title, content_text, type_image, Image=Image):
try:
main = Tk()
ico = Image.open(OS_system().path_tkinter("SockServices.png"))
                        # [...]


init modulo:
Código (python) [Seleccionar]

class OS_system:
def __init__(self):
self.system = platform.system()
        # [...]
def path_tkinter(self,image):
if self.system == "Linux":
return "/etc/SockServices/mods/popup/images/"+str(image)
elif self.system == "Windows":
return "C:\Program Files\SockServices\mods\popup\images\\"+str(image)

El problema es que me da el error
CitarNameError: name 'OS_system' is not defined

El problema es que la clase OS_system del modulo init no es importada dentro de la clase notification. Como lo hago?[/code]
Lo increible, no es lo que ves, sino como es

tincopasan

hola:
        como no hay forma de saber que estás usando en tu código y esto le puede servir a otro, hago un ejemplo básico desde 0 y funcional:

módulo inicio:

Código (python) [Seleccionar]

import os

class Os_system:
    def __init__(self):
        self.system = os.name #me parece mejor que platform, salvo que sigas usando 2.7
   
    def path_tkinter(self,imagen):
        if self.system == "nt":
            return f"windows/{imagen}" #por una cuestión de fiaca cambié el camino
        elif self.system == 'posix':
            return f"linux/{imagen}"




codigo principal:

Código (python) [Seleccionar]
from inicio import *
import tkinter as tk
from PIL import ImageTk, Image
class uno:
    def __init__(self):
        ventana = tk.Tk()
        imagen = Image.open(Os_system().path_tkinter("bola.png")) #la imagen más a mano que tenía
        tkimagen = ImageTk.PhotoImage(imagen)
        imagen= tk.Label(ventana,image=tkimagen)
        imagen.pack()
        ventana.mainloop()
       
       
app=uno()       


esto funciona.

Saludos.