Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Acceder a los elementos de un QGridLayout #341

Open
7 tasks done
diegocostares opened this issue Dec 7, 2021 · 1 comment
Open
7 tasks done

Acceder a los elementos de un QGridLayout #341

diegocostares opened this issue Dec 7, 2021 · 1 comment
Assignees
Labels
Tarea 3 Dudas sobre la T3

Comments

@diegocostares
Copy link

Prerrequisitos

  • Leí las reglas del foro (https://github.com/IIC2233/syllabus/issues/1)
  • Busqué en las issues si ya preguntaron mi duda y no encontré nada parecido (https://github.com/IIC2233/syllabus/issues)
  • Revisé el compilado de dudas de la tarea y no encontré una issue similar a la mía (Duda SOLES_ROBADOS Syllabus#293)
  • Mi duda no se trata sobre una librería, built-in o mala práctica, ya que eso se pregunta en la issue creada para ello.
  • Mi duda no se trata de un tema administrativo o personal, ya que en ese caso debo contactar a mi profe, al Jefe de Bienestar o al correo del curso (https://iic2233.github.io/contacto/)
  • Utilizaré un título descriptivo y llenaré correctamente esta plantilla
  • De ser necesario, solo colocaré código simple que permita explicar mi problema o duda, ya que compartir código de esta evaluación puede ser considerado copia

Duda

Hola, he estado intentando encontrar la forma de acceder a los layout que tengo en un GridLayout para hacerles .hide() según una posición dada, pero no he podido encontrar una función que haga lo que quiero... intente con itemAtPosition, pero no me ha funcionado.

@diegocostares diegocostares added the Tarea 3 Dudas sobre la T3 label Dec 7, 2021
@fernandosmither fernandosmither self-assigned this Dec 8, 2021
@fernandosmither
Copy link
Member

Hola!

Error frecuente: ¿Olvidaste añadir .widget() al objeto retornado por itemAtPosition?

Adjunto snippet de código el cual modifiqué de aquí y aquí el cual es una ventana con un gridlayout y botones randoms. Al pulsar cualquier tecla, el botón de la esquina derecha inferior cambia de texto.

import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout,QPushButton, QApplication)

class basicWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.grid_layout = QGridLayout()
        self.setLayout(self.grid_layout)

        button = QPushButton('1-3')
        self.grid_layout.addWidget(button, 0, 0, 1, 3)
        
        button = QPushButton('4, 7')
        self.grid_layout.addWidget(button, 1, 0, -1, 1)
        
        for x in range(1, 3):
            for y in range(1, 3):
                button = QPushButton(str(str(3*x+y)))
                self.grid_layout.addWidget(button, x, y)

        self.setWindowTitle('Basic Grid Layout')

    def keyPressEvent(self, key) -> None:
        print(".")
        boton = self.grid_layout.itemAtPosition(2, 2)
        boton.widget().setText("Hola")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    windowExample = basicWindow()
    windowExample.show()
    sys.exit(app.exec_())

image
image

Espero que te sea útil. Avísame si te sirvió y si te quedan dudas.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Tarea 3 Dudas sobre la T3
Projects
None yet
Development

No branches or pull requests

2 participants