Escriu per cercar…

Signals and Slots

Com un botó avisa que l'han clicat — el mecanisme amb què els ginys de Qt es parlen entre ells i amb el teu codi.

S'ensenya a
Desenvolupament d’interfícies.Interfícies gràfiques d'usuariDAMProgramacióInterfícies gràfiquesDAW-BIO

Introducció

A Layout vas col·locar botons i camps de text, i queden molt bé.

Prova de fer-hi alguna cosa:

python
main.py
from PySide6.QtWidgets import (QApplication, QLabel, QPushButton, QVBoxLayout,
                               QWidget)

app = QApplication([])

window = QWidget()
window.setWindowTitle("Greetings")
window.resize(420, 160)

label = QLabel("Hello, world!")
button = QPushButton("Click me!")

layout = QVBoxLayout(window)
layout.addWidget(label)
layout.addWidget(button)

window.show()
app.exec()

El botó s’il·lumina quan hi passes el ratolí per sobre, i s’enfonsa quan el cliques.

I no passa res més.

Falta la meitat de la història.

Un giny de Qt emet un senyal quan li passa alguna cosa.

Un botó emet clicked quan el cliques. Un camp de text emet textChanged cada vegada que canvia el text.

El senyal no sap qui l’escolta, i el giny que l’emet tampoc.

Tu connectes el senyal a una funció, i a partir d’aquell moment el bucle d’esdeveniments de Basic la crida per tu.

Entorn de treball

Crea un projecte amb uv, tal com es fa a Project:

shell
uv init pyside-signal
cd pyside-signal
uv add pyside6

La primera connexió

Fes que el botó canviï el text de l’etiqueta.

python
main.py
import random

GREETINGS = ["Hallo Welt", "Hei maailma", "Hola món", "Bonjour le monde"]


def greet():
    label.setText(random.choice(GREETINGS))


button.clicked.connect(greet)

Estàs llegint una vista prèvia.

Inicia la sessió amb Google per llegir la pàgina sencera.

Inicia la sessió amb Google

Només et demanarem que acceptis les condicions del servei.