Pyqt5 pencerenin üstündeki yere arka plan rengi atama

self.setStyleSheet(“background-color: yellow;”)

bu kodu kullanırsam sarı olan yeri boyuyor ben o kenarlık mı ne oluyorsa oranın da boyanmasını istiyorum onu nasıl yaparım

Titlebar deniyor. How to change window titlebar color PyQt5 gibi aramalar yapabilirsiniz.


1 Beğeni

Bunu istemezsin.

Hatta temel işletim sistemi bilgisi olan hiç kimse bunu istemez.

O rengin kontrolünü temel işletim sistemi kontrol eder. Tema gibi. Değiştirirsen tüm pencerelerinin rengini değiştirmiş olursun.

Yani program başladığında bu sarı renge dönüştürürsen, kapatırken de tekrar eski rengine çevirmezsen diğer pencerelerinin hepsinin tepesinde o sarı rengi görürsün.

Genelde bu şekilde de çözülmez.

Basit bir çözümü var.

Ama bu çözümü vermeden önce insanın gerçekten emin olmak istiyor acaba gerçekten bunu istiyor olabilir mi diye.

EDIT 1:

Resmen dejavu yaşadım.

1 Beğeni

Pencere başlığından bahsediyorsun sanırım. Pencere başlık rengi bilgisayarındaki temadan alınır. Yani onu doğrudan değiştirmenin bir yolu yok diye biliyorum. Bu dolaylı olarak yapılabilir. Şöyle ki:

  1. Başlıksız bir pencere oluştur.
  2. Simge durumuna küçültme, programı kapatma ve pencereyi boyutlandırma tuşunu da kendin oluştur. (Pyqt5 bunun için hazır fonksiyonlar sunuyor. Çok daha güzel bir pencere başlığı oluşturmak mümkün. )
1 Beğeni

Teşekkür ederim o bölgenin adını bilmediğim için internetten bakamdaydım

Şey hangisine çözüm basmalıyım 3 üne basamıyormuşum ama 3 ü de çözüm

Mesele çözümün hangi kullanıcının verdiği öneri olduğu değil.

Mesele öğrenebilmiş olman.

Bence, yorumlardan ne anladın nasıl çözdün. Sonuçları nasıl oldu güzelce yaz kendi cevabını çözüm olarak işaretle.

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

Olmuş mu?
Bide setGeometry ,move dışında bir nesneye nasıl konum atarım. setGemotry move de koordinat olarak verdiğim için benim pcmde güzel gözüken bir şey başkasının büyük veya küçük monitöründe kötü gözükebilir veya tam ekranken güzel gözüken bir şey tam ekran dışında kötü gözükebilir

Python Custom QMainWindow title bar and navigation buttons using JSon file | Custom Widgets module - YouTube

Böyle de bir yöntem var.

Sizin kodu denemedim. Gerekirse bir tane kod yazabiliriz.

Bu konuda da alternatif çok.

Ekran çözünürlük bilgisi alınarak uygun başlık boyutu ayarlanabilir. Scale, strech gibi özellikler varsa bunlar kullanılabilir. Tamamen size kalmış.