Foros del Web » Programando para Internet » Python »

PyQT, seperar metodos en diferentes archivos

Estas en el tema de PyQT, seperar metodos en diferentes archivos en el foro de Python en Foros del Web. Me estoy iniciando con pyqt (soy un novatillo). Estoy haciendo un ejemplo sencillo. Una QMainWindow que tiene un solo boton, el cual invoca a un ...
  #1 (permalink)  
Antiguo 07/12/2016, 11:42
 
Fecha de Ingreso: septiembre-2012
Mensajes: 7
Antigüedad: 11 años, 7 meses
Puntos: 0
PyQT, seperar metodos en diferentes archivos

Me estoy iniciando con pyqt (soy un novatillo). Estoy haciendo un ejemplo sencillo. Una QMainWindow que tiene un solo boton, el cual invoca a un Qwidget, el cual tiene un boton y una linea de texto. Cuando se pulse el boton del Qwidget, lo que hace es desactivar la linea de texto (he elegido esto, como podia haber elegido enviar un texto a la linea).

mi codigo

Código:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from PyQt5 import uic

class subvent(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        uic.loadUi('ventana.ui', self)

class Principal(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        uic.loadUi('conexion.ui', self)

        self.boton.clicked.connect(self.invocar)
        self.Sub = subvent()
        self.Sub.boton.clicked.connect(self.ocultar)

    def ocultar(self):
        self.Sub.linea.setEnabled(False)


    def invocar(self):
        self.Sub.exec_()

app = QApplication(sys.argv)
ventana = Principal()
ventana.show()
app.exec_()
Con estas lineas me funciona lo que yo quiero, pero me interesa que el comando:

Código:
self.Sub.linea.setEnabled(False)
que es el que da la orden de desactivar la linea de texto, este en otro archivo, para despues importarla (esto es por que tengo pensado hacer un programa y ahora es tan solo una linea, pero mas adelante serán mucha mas, y de esa manera lo tendre mas organizo el programa, que si esta todo al pegote).

Lo que hago es importar desde el archivo "meca", donde estara separado toda las funciones de la QWidget. Realizo la conexion de boton de la QWidget y uso el metodo importado

El codigo modificado:

Código:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog
from PyQt5 import uic

#importamos el archivo
import meca

class subvent(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        uic.loadUi('ventana.ui', self)

class Principal(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        uic.loadUi('conexion.ui', self)

        self.boton.clicked.connect(self.invocar)
        self.Sub = subvent()

        # realizamos la conexion del boton de la Widget
        self.Sub.boton.clicked.connect(self.ocultar)

    def ocultar(self):
        #Cargo el metodo del archivo meca
        self.accion = meca.ocultar()
        
    def invocar(self):
        self.Sub.exec_()

app = QApplication(sys.argv)
ventana = Principal()
ventana.show()
app.exec_()
codigo archivo meca:

Código:
def ocultar():    
    Sub.linea.setEnabled(False)
He realizado varias combinaciones quitando y poniendo cosas, pero siempre me da error. Se que funciona, ya que si en def ocultar, cambio el comando por print('hola'), cada vez que pulso en el boton del QWidget, me devuelve la terminal 'hola'.

Seguro que sera un tontería, pero ya no se mas donde mirar.

Gracias de antemano

Etiquetas: metodos, pyqt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:28.