python - pyQT4 py3无法在QFrame背景中显示图像

标签 python image background widget pyqt

我有一段时间试图简单地在 QFrame 的背景中显示图像,但根本做不到。我可以在网上看到大量示例,但似乎没有一个适用于我的代码,我不明白为什么:

import sys, random
from PyQt4 import QtCore, QtGui
from PyQt4.QtGui import QPalette, QBrush, QPixmap

class MainWin(QtGui.QMainWindow):
    def __init__(self):
        super(MainWin, self).__init__()
        self.initUI()

    def initUI(self):
        #central widget
        self.theboard = Board(self)
        self.setCentralWidget(self.theboard)
        self.resize(360, 760)
        self.setWindowTitle('Name')
        self.show()

class Board(QtGui.QFrame):
    def __init__(self, parent):
        super(Board, self).__init__(parent)
        self.initBoard()

    def initBoard(self):
        print("ddd")
        frame = Board
        palette = QPalette(self)
        palette.setBrush(QPalette.Background,QBrush(QPixmap("ImageTest.jpg")))
        frame.setPalette(palette)

def main():
    app = QtGui.QApplication([])
    mw = MainWin()
    sys.exit(app.exec_())

if __name__ == '__main__':

    main()

将返回:

TypeError: QWidget.setPalette(QPalette): first argument of unbound method must have type 'QWidget'

如果我不将 QFrame 传递到变量中并这样做:

palette = QPalette(self)
palette.setBrush(QPalette.Background,QBrush(QPixmap("ImageTest.jpg")))
self.setPalette(palette)

没有更多错误,但我的背景仍然是空白。如果我只是尝试填充颜色而不是图像,也会发生同样的情况。

最佳答案

除非它是顶级小部件,否则您需要设置 autoFillBackground属性来让它工作:

    def initBoard(self):
        self.setAutoFillBackground(True)
        palette = QPalette(self)
        palette.setBrush(QPalette.Background, QBrush(QPixmap("ImageTest.jpg")))
        self.setPalette(palette)

或者,更简单的是,使用 style-sheet设置背景图片:

    def initBoard(self):
        self.setStyleSheet('background-image: url("ImageTest.jpg")')

关于python - pyQT4 py3无法在QFrame背景中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26217977/

相关文章:

objective-c - iOS 13 Objective-C后台任务请求

python - C++ 服务器无法通过套接字从 python 客户端读取我的消息

python - 将 2 个 CSV 文件与另一个文件中的映射值合并,以逗号分隔

python - 无法控制游戏中的物体

html - 图解说明 : only move the text and not the background+text

android - 如何在android中设置可扩展列表的背景颜色

python - 正则表达式完整单词模式

javascript - 将并排的 Rects 连接到一个大 Rect

css - Img-缩略图不保持纵横比

javascript - 如何将图像同步绘制到 Canvas