Pyqt5 pencerenin üstündeki yere arka plan rengi atama

Arkadaşlarımın tavsiyesi üzerine ilk olarak pencerenin kenarlıklarını sildim bunun için şu kodu kullandım

self.setWindowFlag(Qt.FramelessWindowHint)

Sonra 2 etiket 3 buton oluşturdum

self.ekranicon = QLabel(self)

self.baslik = QLabel(self)

self.cikis = QPushButton(self)

self.kapla = QPushButton(self)

self.kucult = QPushButton(self)

Daha sonra bunların konumlarını ve iconlarını ayarladım

self.ekranicon.setGeometry(QRect(10, 15, 41, 41))

self.ekranicon.setStyleSheet(“border-image : url(icon.png);”)

gibi.Başlığı oluşturdum

self.baslik.setText(“Hesap makinesi”)

self.baslik.setFont(QFont(‘Arial’, 20))

Sonra butonların işlevini ayarladım

self.cikis.clicked.connect(lambda :exit())

self.kucult.clicked.connect(lambda :self.showMinimized())

self.kapla.clicked.connect(lambda : self.showNormal() if self.isMaximized() else self.showMaximized())

ilki tıklandığında çık anlamına geliyor

2.si tıklandığında simge durumuna at

  1. ise tam ekransa normal boyuta getir tam ekran değilse tam ekran yap

Hareket etmeme sorununu ise internetten şöyle bir yol bularak çözdüm

def mousePressEvent(self,event) :
    self.dokunulanyer=event.globalPos()

eğer adam pencereye dokunursa dokunduğu konumu değişkene atıyor

def mouseMoveEvent(self,event) :
    hareket = QPoint(event.globalPos() - self.dokunulanyer)
    self.move(self.x() + hareket.x(), hareket.y() + hareket.y())
    self.dokunulanyer = event.globalPos()

Mouse yi sürüklediği konumdan mausun ilk dokunduğu yeri çıkarıyor sonra değişkene atıyor örneğin;

Dokunduğumuz konum 10,10 olsun

Sonra mauseyi 10,15 e sürükledik

10,15 ten 10,10 u çıkarıyor hareketi 0,5 buluyor

Daha sonra şuanki konumunun x ine 0 ekliyor y sine 5 ekliyor

En sonda sürüklediğimiz yeri değişkene atıyoruz ki 10,15 - 10,15 = 0,0 olsun hareket ettirmesin(bu kısımdan tam emin değilim)

2 Beğeni