Preguntas sobre clases, ventanas y demás

Angel Lopez Muñoz lopez en esrf.fr
Vie Oct 24 10:00:39 CEST 2003


Hola a todos,

estoy escribiendo un programa que realiza cálculos con matrices (entre 
otras cosas). La interfac gráfica la estoy haciendo en qt, no es por 
preferencia frente a wxwindow, simplemente porque es el estandar en mi 
lugar de "trabajo" (jeje soy becario). Bueno, con respecto a las ventanas 
tengo algunas preguntillas un poco de base, que creo que la explicacion 
puede ser la misma para las dos librerias (qt y wxwindow).

1. Genero las ventanas con sus botones y editboxes, etc. con el designer, 
despues paso el fichero generado a código python y le dejo intacto. 
Simplemente le importo en mi programa con : from ficheroqtpy import *  De 
esta forma puedo seguir haciendo modificaciones en el designer y no tengo 
que tocar nada su codigo.

2. Las conexiones de los widgets con funciones de mi programa o con otros 
widgets, las codifico dentro de mi programa. Si la clase correspondiente a 
la ventana se llama mi_ventana, en mi codigo (en el que hice from 
ficheroqtpy import *) escribo ventana=miventana() y despues puedo usar 
todos los metodos de la clase, sustituyendo el self por ventana. Bueno, asi 
las cosas me funcionan pero no se si es asi como debe hacerse o no. Si esta 
bien, bueno puede que le ayude a alguien...

3. Otro asuntito creo que para muchos de vosotros sera elemental es que no 
se de que manera crear las ventanas, me explico, que deriven de la clase 
QDialog o de la clase QWidget. La verdad es que ahora lo hago 
indistintamente, pero supongo que una será para una cosa y la otra para una 
distinta. Los Dialog les uso sobre todo, cuando quiero hacerlos "modal". Si 
alguien puede aclarame un poquillo las cosas se lo agradeceria.

4. La ultima cuestion no tiene ya nada que ver con las ventanitas, es algo 
de python puro. Necesito hacer una serie de funciones que devuelven un 
array como funcion, mejor pongo un ejemplito:

def T(teta):
     T = zeros((3,3), Float)
     T[0,0]=cos(teta)
     T[0,1]=sin(teta)
     T[0,2]=0.
     T[1,0]=-sin(teta)
     T[1,1]=cos(teta)
     T[1,2]=0.
     T[2,0]=0.
     T[2,1]=0.
     T[2,2]=1.

     return T

pero en otras ocasiones la matriz T se calculará de forma ligeramente 
distinta segun sea el tipo de aparato sobre el que se hacen los cálculos, y 
lo mismo ocurre con otras muchas matrices. Mi duda es si simplemente las 
codifico con otro nombre o podría crear clases (con las clases estoy un 
poquillo perdido) y creo por ejemplo una clase tipo1() y en ella declaro 
las funciones de ese tipo, otra tipo2() y lo mismo, pero las funcines 
tendran el mismo nombre en la la clase tipo1(). Esto me parece mas "elegante".


Bueno, creo que por ahora ya son bastantes cosas, parece que me quedo un 
pelin largo...

Muchas gracias a todos.




____________________________________
Angel Lopez Muñoz
Spanish CRG BeamLine
at the European Synchrotron Radiation Facility

6, Rue Jules Horowitz
ESRF-B. P. 220
F-38043 Grenoble Cedex 09
France

Tel. +33-(0)476882449
Fax +33-(0)476882816




Más información sobre la lista de distribución Python-es