Python pyqt5 de frame ve arka plan resmi̇

Selamün aleyküm arkadaşlar ben ui yapıyorum qt5 den lakin background resmi framede de gözüküyor ui hemen aşağıda acaba nerede yanlış yapıyorum

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'main.ui'
#
# Created by: PyQt5 UI code generator 5.15.1
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets

)

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1024, 600)
        MainWindow.setMinimumSize(QtCore.QSize(1024, 400))
        MainWindow.setStyleSheet("background-image: url(:/background/backgrounds/security.jpg);")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("")
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(90, 40, 551, 331))
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.label = QtWidgets.QLabel(self.frame)
        self.label.setEnabled(True)
        self.label.setGeometry(QtCore.QRect(100, 60, 351, 171))
        self.label.setStyleSheet("font: 25 italic 26pt \"Ubuntu\";\n"
"color: rgb(255, 255, 255);")
        self.label.setObjectName("label")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "İNTER AKTİF KAMERA GÜVENLİK SİSTEMİ"))
        self.label.setText(_translate("MainWindow", "FRAME BÖLÜMÜ"))
import backgrounds_rc
import icons_rc


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

backgrunds_qrc dosyası :

<RCC>
  <qresource prefix="background">
    <file>backgrounds/security.jpg</file>
  </qresource>
</RCC>

icons_qrc:

<RCC>
  <qresource prefix="icon">
    <file>icons/1.ico</file>
  </qresource>
</RCC>

icon ve background resimleri :

1-1

Aleykum selam;

Bu dosya QtDesigner’dan Python koduna convert edilmiş. En üst kısımda şöyle yazıyor;

WARNING: Any manual changes made to this file will be lost when pyuic5 is

run again. Do not edit this file unless you know what you are doing.

“Bu dosyada yapılan tüm manuel değişiklikler, pyuic5 tekrar koşturulduğunda yapılan değişiklikler kaybolacak. Ne yaptığınızı bilmiyorsanız, bu dosyayı düzenlemeyin.”

Örneğin pencereye 2 tane buton ekleyip convert ettiniz. Yukarıdaki gibi convert edilen ui dosyası üzerine ekleme yaptınız. Ardından bir tane de label ekleme istediniz. Tekrar QtDesigner uygulamasına dönüp bir label eklediniz ve convert ettiniz. O da ne :open_mouth: Az önce yaptığınız eklemeler yok!

QtDesigner ile yapılan tasarımlar Python kodunda istenilirse doğrudan kullanılabilir ve bu sayede yapılan değişiklikler anlık olarak görüntülenebilir. İkinci bir seçenek ise Python koduna convert etmek (bunu zaten biliyorsunuz).

İlk yöntemi tavsiye ederim. Ben şahsen ikinci yöntemi, tasarım ile işim bittiğinde kullanıyorum.

Gelelim probleme.

Yazdığınız bu QSS kodlarının kimin için geçerli olduğunu belirtmemişsiniz. Dolayısıyla QSS kodları, (eğer stili değiştirilebiliyorsa) tüm objeler için geçerli oluyor.

Şurada pencere olarak QMainWindow seçmişsiniz.

Ui kodlarını da bu pencere üzerine eklemişsiniz, o halde yazdığınız QSS kodlarının QMainWindow için olduğunu belirtin. Resmi sürekli tekrarlamasın diye, background-repeat değerini no-repeat olarak belirtiyorum:

MainWindow.setStyleSheet("QMainWindow{\
	border-image: url(background.jpeg);\
	background-repeat:no-repeat;}")

Bu kodlar tüm QMainWindow nesneleri için geçerli olacak. Örneğin 10 tane label’ımız olsun. Biz QMainWindow yerine QLabel yazarsak uygulama içerisindeki tüm label’lar etkilenecek. Ancak sadece bir label’ı etkilemek istersek, şu formatı kullanmalıyız:

#nesneismi{
    font-color: cyan;
}