QWidget pour tracer des rectangles.
Bonjour Jean-Marc,
Ça va dépendre de quelle est la finalité de ton programme. Est-ce que les cases du damier par exemple doivent être "clickable" ?
Ce qui t'offrira le plus de flexibilité, ce sont les QGraphicsView (et les QGraphicsItem), qui te permettent de dessiner n'importe quel type de forme, mais c'est encore une autre logique que les layout et widgets que je montre dans ma formation.
Bonjour Jean-Marc,
Dans ce cas je te conseille de simplement partir sur un QGridLayout avec des QPushButton que tu stylise (avec une feuille de style).
Tu fais une grille de 10x10, et tu peux jouer sur le contents margin et spacing pour que le damier soit collé :
Tu mets les contents margin et le spacing à 0 et tu mets tes QPushButton en flat (setFlat(True)) et ça devrait te permettre d'avoir ce que tu souhaites :)
Voilà pour les pistes, je te laisse explorer tout ça et n'hésite pas si tes tests ne sont pas concluants (on pourra en parler aussi à la session de mentorat de cet après-midi à 14h si tu es disponible !)
Bonsoir Jean-Marc :)
J'avais posté le code dans la communauté en annonçant la rediffusion, je te le remet ici (et je vais rajouter une fonctionnalité pour pouvoir attacher / partager les scripts qui ont été vus pendant la session dans les rediffusions pour les prochaines !) :
import itertools
from PySide6 import QtWidgets, QtCore, QtGui
class MainWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Damier")
self.layout = QtWidgets.QGridLayout()
self.setLayout(self.layout)
self.layout.setContentsMargins(0, 0, 0, 0)
self.layout.setSpacing(0)
switch = False
bg = "f00"
fg = "fff"
for x, y in itertools.product(range(5), range(5)):
button = QtWidgets.QPushButton()
button.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.MinimumExpanding)
self.layout.addWidget(button, x, y)
button.setStyleSheet(f"""
QPushButton {{
background-color: #{bg if switch else fg};
color: #{fg if switch else bg};
}}
QPushButton:pressed {{
background-color: #0000ff;
}}
""")
switch = not switch
self.resize(400, 400)
app = QtWidgets.QApplication()
win = MainWindow()
win.show()
app.exec()
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte