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