IIC2233 / syllabus-2021-1

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
https://iic2233.github.io
38 stars 49 forks source link

Problemas Qt designer #503

Closed gonzaga2000 closed 3 years ago

gonzaga2000 commented 3 years ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Hola! tengo un error cuando corro un archivo de Qt designer. en la aplicación me salen los labels normales, pero cuando corro el código, los labels me salen cortados. Alguna idea de que puede ser?

Esto es lo que tengo en Qt designer:

designer

y esto me sale cuando lo corro en vscode:

pyth
tqmbanados commented 3 years ago

Hola! Lo más probable es que en Qt designer la ventana se asuma con ciertas dimensiones, que no son las mismas que estás ocupando en la Ventana que escribes en tu código. Si es que estás usando QLayouts (lo cual es muy recomendable), también es probable que ocurran ese tipo de cosas.

Te recomiendo revisar las dimensiones de la Ventana, y los atributos del Layout si es que usas uno. Si revisas la documentación de los Layout, hay varios métodos y atributos que tienen que ver con el "espacio" asignado entre cada widget. El nombre del atributo es spacing y se cambia con setSpacing.

Lo más probable es que sólo sea un problema de agrandar la Ventana. Si esos botones están en un Widget dentro de una ventana, tienes que ver como hacer que ese Widget ocupe más espacio dentro de la ventana.

Espero haberte sido de ayuda! Si lo anterior no te funciona cuéntame para que podamos probar otras opciones 😸

gonzaga2000 commented 3 years ago

No entiendo muy bien la parte de que las dimensiones de la ventana que ocupo en mi código son distintas a las que asume Qt designer. En mi código no defino las dimensiones de la ventana, las dimensiones las defini en Qt designer.

tqmbanados commented 3 years ago

Oka, si es ese el caso, lo más probable es que el problema sea el otro. Esta Ventana es independiente, o está contenida dentro de otra?

Para ejemplificar, en una app, tienes la ventana principal, que contiene varias "subventanas". Si es una "subventana", es posible que sus dimensiones cambien para poder caber dentro de la ventana principal.

Revisa también lo de los layouts! Por las imágenes que mandaste, lo más probable es que les falte un poco de espacio a esos layouts. Te recomiendo revisar la propiedad de QLabel minimumSize. Esta se refiere al tamaño mínimo que puede tener el QLabel, y se cambia con setMinimumSize. En la documentación salen más detalles al respecto, pero por el momento podrías setear un minimumSize a esos labels lo suficientemente grande para que quepa todo el texto (*hint: se puede editar este atributo directamente desde designer).

tqmbanados commented 3 years ago

Hola! Recordé otra cosa, que quizás haya sido el problema desde el inicio 😟. Prueba setear el atributo scaledContents de los QLabel a True. Como es usual en Qt, esto se hace con un método setter setScaledContents. Si es que esos QLabelcargan imágenes, explicaría por que se te cortan al haber un cambio en el tamaño!

gonzaga2000 commented 3 years ago

Hola! intente todo lo que me dijiste y aun me siguen saliendo distintos los labels, alguna otra idea de cual puede ser el error?

tqmbanados commented 3 years ago

Así a primeras no se me ocurre. ¿Podrías hacer push para revisar tu código? Cuéntame cual es el archivo de designer y en qué archivo esta la clase que estas implementando.

tqmbanados commented 3 years ago

Hola! Pregunté a otrxs ayudantes y me dijeron que puede ser algo de la configuración de Windows jajaja. Así que si tienes windows, prueba cambiar el tamaño de la fuente por defecto. Esto se hace en configuración ---> accesibilidad (Ease of Access en inglés). Ahí hay un setting para hacer más grande el texto que debería estar en 100%, pero windows a veces lo cambia por defecto. Prueba ver si es ese el problema! Si no tienes windows entonces veré si encuentro algo en tu código 😸.

pedroriosg commented 3 years ago

Hola @gonzaga2000 ,

Prueba escribiendo estas líneas al inicio de tu código. Debería solucionar el problema. Debes importar la librería os al inicio de tu módulo.

os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "0" os.environ["QT_SCALE_FACTOR"] = "1" os.environ["QT_SCREEN_SCALE_FACTORS"] = "2"

Saludos y avísame si te funciona por favor ✌️

gonzaga2000 commented 3 years ago

@pedroriosg alfinal pude hacerlo ajustando la escala al 100%. Cuendo pongo las lineas que me mandaste la ventana que se abre es gigante, ocupa mas que toda la pantalla jajajajaj.

pedroriosg commented 3 years ago

Buena! Puedes poner en este mismo hilo que solución usaste por si le sirve a alguien más?

gonzaga2000 commented 3 years ago

@pedroriosg obvio! Para poder solucionar el problema tuve que ir a: configuracion ---> Pantalla ---> Escala y distribucion. Tuve que ponerla en 100% , en mi caso por default esta en 150% asique no se aplica para todos cambiarla a 100%. Al hacer este cambio toda la pantalla se hace mas chica, asique idealmente hay que usarla solo al trabajar en la tarea, y cuando se deje de hacer, volver a cambiar la escala al valor establecido por default. Para que mi codigo no se viera tan chico tambien le puse zoom a vscode.

gonzaga2000 commented 3 years ago

otra cosa que hice para verificar que las ventanas fuesen del mismo porte fue asegurarme de que la escala de "Preview" de Qt designer estuviese en 100%. Se hace de esta forma, en desginer se va a: settings --> preferences --> Forms --> hacer tick en preview zoom --> ajustar en 100%. De esta forma estando en Qt desginer, uno puede apretar ctrl +R y te va a aparecer una previsualizacion de la ventana, esta previsualizacion es como se deberia ver una vez corrido el codigo.