self.scene.addEllipse(0,0,20,20,brush=QBrush(Qt.white),
pen=QPen(Qt.NoPen))
disque.setFlag(QGraphicsItem.ItemIsMovable)
disque.setFlag(QGraphicsItem.ItemIsSelectable)
Pour exécuter la méthode lors d'un clic sur le bouton, on utilise la connexion signal-slot
via le décorateur pyqtSlot. On crée un disque blanc à l'origine de la scène (dans le
coin supérieur gauche de la vue globale). À noter : pour l'exemple, on a utilisé un
pinceau invisible (type NoPen), ce qui a pour effet de créer une forme sans contour.
Passons à présent au champ de saisie textuel (QLineEdit) :
def __init__(self, parent=None):
…
self.lineEditTexte.setText("Tous en scène !")
…
@pyqtSlot(str)
def on_lineEditTexte_textChanged(self,msg):
self.texte.setPlainText(msg)
On se connecte ici au signal textChanged qui est émis à chaque caractère tapé ; en
assignant le texte saisi dans le QGraphicsTextItem via la méthode setPlainText, on
obtient une mise à jour immédiate du texte sur les vues. Pour synchroniser le champ de
saisie et l'élément graphique au lancement de l'application, on fait un setText dans le
constructeur __init__, ce qui déclenche en réaction la méthode slot
on_lineEditTexte_textChanged.
Passons au bouton Changer couleur… ; son but est de permettre à l'utilisateur de
changer la couleur des éléments sélectionnés.
from PyQt5.QtWidgets import QColorDialog
…
@pyqtSlot()
def on_pushButtonChangerCouleur_clicked(self):
itemsSelectionnes = self.scene.selectedItems()
couleurInit = itemsSelectionnes[0].brush().color()
couleur = QColorDialog.getColor(couleurInit,self,'Changer la
couleur')
if couleur.isValid():
brosse = QBrush(couleur)
for item in itemsSelectionnes:
item.setBrush(brosse)
Lors du clic, on retrouve les éléments sélectionnés sur la scène via la méthode
selectedItems (rappelons que la multisélection est possible). On affiche un
QColorDialog, la boîte de dialogue standard de votre OS pour choisir une couleur.
221
pen=QPen(Qt.NoPen))
disque.setFlag(QGraphicsItem.ItemIsMovable)
disque.setFlag(QGraphicsItem.ItemIsSelectable)
Pour exécuter la méthode lors d'un clic sur le bouton, on utilise la connexion signal-slot
via le décorateur pyqtSlot. On crée un disque blanc à l'origine de la scène (dans le
coin supérieur gauche de la vue globale). À noter : pour l'exemple, on a utilisé un
pinceau invisible (type NoPen), ce qui a pour effet de créer une forme sans contour.
Passons à présent au champ de saisie textuel (QLineEdit) :
def __init__(self, parent=None):
…
self.lineEditTexte.setText("Tous en scène !")
…
@pyqtSlot(str)
def on_lineEditTexte_textChanged(self,msg):
self.texte.setPlainText(msg)
On se connecte ici au signal textChanged qui est émis à chaque caractère tapé ; en
assignant le texte saisi dans le QGraphicsTextItem via la méthode setPlainText, on
obtient une mise à jour immédiate du texte sur les vues. Pour synchroniser le champ de
saisie et l'élément graphique au lancement de l'application, on fait un setText dans le
constructeur __init__, ce qui déclenche en réaction la méthode slot
on_lineEditTexte_textChanged.
Passons au bouton Changer couleur… ; son but est de permettre à l'utilisateur de
changer la couleur des éléments sélectionnés.
from PyQt5.QtWidgets import QColorDialog
…
@pyqtSlot()
def on_pushButtonChangerCouleur_clicked(self):
itemsSelectionnes = self.scene.selectedItems()
couleurInit = itemsSelectionnes[0].brush().color()
couleur = QColorDialog.getColor(couleurInit,self,'Changer la
couleur')
if couleur.isValid():
brosse = QBrush(couleur)
for item in itemsSelectionnes:
item.setBrush(brosse)
Lors du clic, on retrouve les éléments sélectionnés sur la scène via la méthode
selectedItems (rappelons que la multisélection est possible). On affiche un
QColorDialog, la boîte de dialogue standard de votre OS pour choisir une couleur.
221
