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