1/25
Conjunto de flashcards diseñadas para repasar los conceptos fundamentales de interfaces gráficas de usuario utilizando PyQt6, cubriendo desde widgets básicos hasta diseño modular y manejo de múltiples ventanas.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
¿Qué es la arquitectura basada en eventos en las interfaces modernas?
Es un modelo donde el programa reacciona a acciones del usuario, como clics o presión de teclas, ejecutando una función asociada llamada handler o manejador, en lugar de seguir una secuencia fija.
¿Cuál es la función principal del módulo QtWidgets en PyQt6?
Contener los elementos gráficos clásicos necesarios para construir la interfaz, como QWidget, QPushButton, QLabel, QLineEdit y QApplication.
¿Qué tipos de herramientas incluye el módulo QtGui?
Incluye herramientas relacionadas con imágenes, colores, fuentes, eventos del teclado y mouse, e integración gráfica.
¿Por qué es obligatorio ejecutar super().init() en una clase que hereda de QWidget?
Porque inicializa correctamente la parte de la clase padre (QWidget) que tiene la ventana; sin esta línea, el objeto gráfico podría no quedar inicializado correctamente.
¿Qué significan los cuatro parámetros en el método setGeometry(x, y, ancho, alto)?
Los dos primeros (x e y) indican la posición de la esquina superior izquierda de la ventana en la pantalla, y los otros dos definen el ancho y el alto en píxeles.
¿Cuál es la restricción principal respecto a la instancia de QApplication?
Debe existir una sola instancia de QApplication por programa y debe crearse antes de construir cualquier widget.
¿Qué sucede cuando se ejecuta app.exec()?
Se inicia el event loop o ciclo principal de eventos, deteniendo el flujo lineal de Python para esperar y procesar clics, teclas o señales internas hasta que la aplicación termina.
¿Cómo funciona el sistema de coordenadas en PyQt?
El origen (0,0) está en la esquina superior izquierda; el eje x aumenta hacia la derecha y el eje y aumenta hacia abajo.
¿Cuál es la diferencia entre move(x, y) y setGeometry(x, y, ancho, alto)?
move(x, y) cambia solamente la posición del widget, mientras que setGeometry permite definir tanto la posición como el tamaño simultáneamente.
¿Qué objeto se utiliza para cargar y representar una imagen en PyQt6 antes de mostrarla en un QLabel?
Se utiliza un objeto QPixmap, que se importa desde el módulo QtGui.
¿Para qué sirve el símbolo & en el texto de un QPushButton?
Establece una tecla de acceso rápido o mnemónico (por ejemplo, Alt + la letra siguiente al símbolo) para activar el botón mediante el teclado.
¿Cuál es la ventaja de usar layouts (QHBoxLayout, QVBoxLayout) en lugar de posicionamiento absoluto?
Los layouts administran automáticamente la posición y tamaño de los widgets según el espacio disponible y el sistema operativo, permitiendo que el contenido se redistribuya al redimensionar la ventana.
¿Qué hace el método addStretch(numero) en un layout?
Agrega espacio flexible que se reparte proporcionalmente según el peso indicado, empujando los widgets hacia una dirección específica.
¿Cómo se distribuyen los widgets en un QGridLayout?
Mediante filas y columnas que comienzan desde cero, usando el método addWidget(widget, fila, columna).
¿Qué es una señal (Signal) y un slot en PyQt?
Una señal es una notificación de que algo ocurrió (como un clic) y un slot es la función o método que se ejecuta automáticamente en respuesta a esa señal.
¿Por qué no se deben usar paréntesis al conectar una señal con un slot, como en boton.clicked.connect(self.metodo)?
Porque se debe entregar el objeto función para que PyQt lo ejecute más adelante; usar paréntesis ejecutaría la función inmediatamente durante la conexión.
¿Qué retorna el método self.sender()?
Retorna el objeto que emitió la señal que actualmente está siendo procesada por el slot.
¿Qué se debe activar para que mouseMoveEvent detecte el movimiento del cursor sin necesidad de presionar un botón?
Se debe activar el seguimiento del mouse con el método self.setMouseTracking(True).
¿Cuál es la diferencia entre event.text() y event.key() en un evento de teclado?
event.text() retorna el carácter o texto asociado a la tecla, mientras que event.key() retorna un código numérico que identifica la tecla física (útil para teclas especiales).
¿Cómo se define una señal personalizada que transporta un dato de tipo texto?
Se declara como atributo de clase usando pyqtSignal(str), importado desde QtCore.
En el diseño Front-end y Back-end, ¿cuál es la responsabilidad del Backend?
Contener la lógica interna, algoritmos, validación y procesamiento de datos sin conocer los detalles de los elementos gráficos de la interfaz.
En el contexto de código PyQt, ¿qué es la cohesión?
Es el grado en que los métodos de una clase trabajan para un mismo objetivo; una clase con alta cohesión separa tareas visuales de la lógica de procesamiento.
En el contexto de código PyQt, ¿qué es el acoplamiento?
Representa cuánto depende una parte del programa de otra; el uso de señales ayuda a lograr un bajo acoplamiento al permitir la comunicación sin llamadas directas constantes.
¿Por qué una segunda ventana puede desaparecer inmediatamente si se crea dentro de un método como una variable local?
Porque al terminar la ejecución del método, la variable local desaparece y Python elimina el objeto de memoria al no quedar referencias permanentes que lo mantengan vivo.
¿Cuál es la diferencia entre los métodos hide() y close()?
hide() oculta la ventana pero la mantiene en memoria (se puede reutilizar con show()), mientras que close() solicita el cierre formal de la ventana.
¿Por qué se recomienda declarar señales como atributos de clase y no dentro de init?
Por diseño interno de PyQt, para que funcionen correctamente dentro del mecanismo de metadatos de Qt que gestiona las conexiones entre objetos.