Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: royer14 en Julio 03, 2018, 01:09:10 PM

Título: [wxPython] como enlazar un archivo py al padre?
Publicado por: royer14 en Julio 03, 2018, 01:09:10 PM
Hola en en wxpython he creado una ventana en archivo main.py, abajo esta el codigo.
Código (python) [Seleccionar]

import wx
import wx.xrc
#from accion import evento

class MyFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=u"Muestra", pos=wx.DefaultPosition, size=wx.Size(500, 300),
                          style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)

        self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)

        bSizer1 = wx.BoxSizer(wx.VERTICAL)

        self.texto = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer1.Add(self.texto, 0, wx.ALIGN_CENTER | wx.ALL, 5)

        self.buton = wx.Button(self, wx.ID_ANY, u"ejecutar", wx.DefaultPosition, wx.DefaultSize, 0)
        bSizer1.Add(self.buton, 0, wx.ALIGN_CENTER | wx.ALL, 5)

        self.SetSizer(bSizer1)
        self.Layout()

        self.Centre(wx.BOTH)

        # Connect Events
        self.buton.Bind(wx.EVT_BUTTON, self.iniciar)

    def __del__(self):
        pass

    # Virtual event handlers, overide them in your derived class
    def iniciar(self, event):
        #clase = evento()
        #clase.evento()    quiero ejecutar desde otro py


if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame(None)
    frame.Show()
    app.MainLoop()


Como se han dado cuenta, en:
Código (python) [Seleccionar]
def iniciar(self, event):
todas las acciones que se encuentran dentro de esta definicion, quiero que se ejecute desde otro py archivo.
por ejemplo: #from accion import evento
contiene algunas acciones
el archivo accion.py
Código (python) [Seleccionar]
def evento(self):
    texto = self.self.texto.GetLineText(0)
    print(texto)

podrian ayudarme?, no encuentro un tutorial sobre esta clase de preguntas.
Ahhh tambien me habia olvidado, es necesario crear clases?
Título: Re:[wxPython] como enlazar un archivo py al padre?
Publicado por: Once en Julio 04, 2018, 07:07:47 PM
Básicamente tu mismo respondiste la pregunta, pero vamos por partes.

Para importar las "acciones" de otra carpeta (y en general módulos) lo que tienes que hacer es crear la carpeta (obviamente) y dentro de ésta colocar un archivo con nombre __init__.py vacío. Éste archivo lo que le va a decir a Python es que dentro de esa carpeta van a haber módulos que va a poder importar.

Así que tu árbol de directorios debería quedar algo así:

(https://imgur.com/CNSpRxXl.png)

con esto en mente, simplemente importamos el módulo, en este caso eventos:

Código (python) [Seleccionar]
from acciones import eventos

Ahora, el código de eventos.py es:

Código (python) [Seleccionar]
def evento(self):
    texto = self.texto.GetLineText(0)
    print(texto)


Dentro del módulo tenemos una función: evento() que recibe un parametroque llamamos self y que va a ser la referencia a la clase donde tiene la GUI, por lo tanto vas a poder modificar ésta clase como si fuera una método de esta clase, puesto que todos los métodos reciben por defecto como primer parámetro la referencia a la clase.

Y ahora sólo nos queda llamar al evento, eso lo hacemos de la siguiente forma:

Código (python) [Seleccionar]
eventos.evento(self)

Del módulo eventos llamamos a la función eventos.

Espero sea lo que estabas preguntando..

Saludos.
Título: Re:[wxPython] como enlazar un archivo py al padre?
Publicado por: royer14 en Julio 05, 2018, 03:41:29 PM
Oh, interesante, bueno no lo sabia, y si por alguna razón quiero hacer esto
Código (python) [Seleccionar]

Class Prog:
       def__init__:
            #acciones u otro gui diseñado

Crees que sea correcta, bueno quiero trabajar con módulos externos como  su proceso para su funcionamiento se en una clase, por ejemplo PyMuPDF u otro.
Muchas Gracias por tu respuesta, deberías hacer tutoriales en youtube.
Título: Re:[wxPython] como enlazar un archivo py al padre?
Publicado por: Once en Julio 05, 2018, 11:53:00 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Oh, interesante, bueno no lo sabia, y si por alguna razón quiero hacer esto
Código (python) [Seleccionar]

Class Prog:
       def__init__:
            #acciones u otro gui diseñado

Crees que sea correcta, bueno quiero trabajar con módulos externos como  su proceso para su funcionamiento se en una clase, por ejemplo PyMuPDF u otro.
Muchas Gracias por tu respuesta, deberías hacer tutoriales en youtube.

No entiendo muy bien qué es lo que quieres, hace un tiempo escribí este tutorial http://elblogdeonce.blogspot.com/2016/12/pequeno-sistema-de-plugins-con-python3.html no usa clases, pero creo que es a lo que te refieres. sino, por favor intenta explicarte algo mejor.

Saludos.