使用PyQt5添加背景图像

问题描述 投票:-1回答:1

我正在尝试使用先前问题的答案来添加背景。

可悲的是,它们无法正常工作并返回错误,无论是样式表还是=符号,还是“”“。

我认为这可能是我的图片位置?是否需要一些特殊的东西来存储图像或我缺少的其他东西?

我已经显示了该代码的编辑后版本。

谢谢

import sys
from PyQt5.QtWidgets import QApplication,  QWidget,  QLabel, QMainWindow, QPushButton, QAction
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtCore import pyqtSlot
import os
os.chdir(r'C:\Users\Paul Hannell\python_files')

class App(QMainWindow):      # Opening Window

    def __init__(self):
        super().__init__()
        self.title = "Timelord Timer PyQt5"
        self.left = 70
        self.top = 100
        self.width = 1170
        self.height = 740
        self.initUI()


    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.setWindowIcon(QIcon(r'C:\Users\Paul Hannell\python_files\Timelord.ico'))
        self.statusBar().showMessage('Message in Status Bar')
        label=QLabel(self)

        ############################
        # Background Image

        self.centralwidget = QWidget()
        self.setCentralWidget(self.centralwidget)
        lay = QHBoxLayout(self.centralwidget)

stylesheet = '''
    MainWindow {
        background-image: url(r'C:\Users\Paul Hannell\python_files\Running_Around4.png');
        background-repeat: no-repeat;
        background-position: center;
    }
'''

        #####################################

mainMenu = self.menuBar()
fileMenu = mainMenu.addMenu('File')
settingsMenu = mainMenu.addMenu('Settings')
resultsMenu = mainMenu.addMenu('Results')
reportsMenu = mainMenu.addMenu('Reports')
infoMenu = mainMenu.addMenu('Info')

newButton=QAction('New', self)
newButton.setStatusTip('New Race')
        #newButton.triggered.connect(self.create)    #This open new event options
fileMenu.addAction(newButton)

openButton = QAction('Open' , self)
openButton.setStatusTip('Open File')
        #openButton.triggered.connect(self.open)  # This will open existing
fileMenu.addAction(openButton)

deleteButton=QAction('Delete', self)
deleteButton.setStatusTip('Delete Race')
        #deleteButton.triggered.connect(self.create)    #This delete existing event.
fileMenu.addAction(deleteButton)

exitButton=QAction('Exit', self)
exitButton.setStatusTip('Exit application')
exitButton.triggered.connect(self.close)
fileMenu.addAction(exitButton)



self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

python pyqt pyqt5
1个回答
0
投票

您的代码缩进严重(并且时间太长,因此很难说,但是我看到了几个问题:

  • 应该在样式表中为#MainWindow(您缺少#)] >>
  • 您需要使用以下名称来命名应用程序:self.setObjectName('MainWindow')
  • 您有时需要使用setStyleSheet
  • 网址需要修正:没有引号,也没有'r';只是文件名(也许文件名中的空格需要转义,您可以尝试使用它)
  • 例如,这有效:

import sys
from PyQt5.QtWidgets import QApplication,  QWidget,  QLabel, QMainWindow, QPushButton, QAction


class App(QMainWindow):      # Opening Window
    def __init__(self):
        super().__init__()
        self.setWindowTitle('hello bg')

        self.setObjectName('MainWindow')

        stylesheet = '''
    #MainWindow {
        background-image: url(/home/me/photos/DSC_0001.jpg);
        background-repeat: no-repeat;
        background-position: center;
    }
'''        
        self.setStyleSheet(stylesheet)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

© www.soinside.com 2019 - 2024. All rights reserved.