import sys import os from PyQt6.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget from PyQt6.QtCore import Qt, QPoint # À placer tout en haut, avant les imports PyQt6 si possible os.environ["QT_QPA_PLATFORM"] = "xcb" class FenetreSansTitre(QMainWindow): def __init__(self): super().__init__() # 1. Retirer la barre de titre self.setWindowFlags(Qt.WindowType.FramelessWindowHint) self.resize(400, 300) # Interface simple layout = QVBoxLayout() btn_quitter = QPushButton("Fermer la fenêtre") btn_quitter.clicked.connect(self.close) layout.addWidget(btn_quitter) container = QWidget() container.setLayout(layout) self.setCentralWidget(container) # Variable pour stocker la position du clic self.old_pos = None # --- Logique de déplacement --- def mousePressEvent(self, event): if event.button() == Qt.MouseButton.LeftButton: # On sauvegarde la position relative du curseur dans la fenêtre self.old_pos = event.globalPosition().toPoint() def mouseMoveEvent(self, event): if self.old_pos is not None: # Calcul de la distance parcourue delta = QPoint(event.globalPosition().toPoint() - self.old_pos) # Déplacement de la fenêtre self.move(self.x() + delta.x(), self.y() + delta.y()) # Mise à jour de la position de référence self.old_pos = event.globalPosition().toPoint() def mouseReleaseEvent(self, event): self.old_pos = None if __name__ == "__main__": app = QApplication(sys.argv) fenetre = FenetreSansTitre() fenetre.show() sys.exit(app.exec())