Files
PyQt6_LaTaniere/frameless_for_MsWindow.py
2026-03-02 17:39:26 +01:00

53 lines
1.7 KiB
Python

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())