PyQt设置窗口背景图像,以及图像自适应窗口大小变化
第一次用PyQt, 由于之前已经用了一段时间的Python,种种原因需要做界面,搜了网上很多攻略,选择了最简单的一个方法,下载PyQt5和pyqt5_tools。具体的配置这里不详细说了。配置好之后通过如下界面点击Qt Design(自己起的名)调用QT:
点击之后创建QtWidgets的界面(test是自己起的名):
此时点击保存,选择当前工程的路径,工程目录下会多一个.ui文件,此时右击该ui文件:
利用pyuic把ui文件转换成Python代码:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 300)
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 0, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Link, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.LinkVisited, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 85, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Link, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.LinkVisited, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 0, 255))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Link, brush)
brush = QtGui.QBrush(QtGui.QColor(255, 0, 0))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.LinkVisited, brush)
Form.setPalette(palette)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
此时新建文件login.py:
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QPixmap,QPainter
from test import Ui_Form
import numpy as np
import sys
class mywindow(Ui_Form, QWidget):
def __init__(self):
super(mywindow, self).__init__()
self.setupUi(self)
self.num = np.random.randint(10)
self.setWindowTitle('行人检测')
print(self.num)
def paintEvent(self, event):# set background_img
painter = QPainter(self)
painter.drawRect(self.rect())
pixmap = QPixmap("./img/1.jpg")#换成自己的图片的相对路径
painter.drawPixmap(self.rect(), pixmap)
if name == ‘main’:
app = QApplication(sys.argv)
w = mywindow()
w.paintEngine()
w.show()
sys.exit(app.exec_())
结果:
全屏:
由于第一次写博客,对格式不了解,尴尬,以上程序可能存在空格缩进问题,这个可以很简单,可以自行调整。另外,文中所有代码(黑框之外也算)都要复制。