zbs813270556 发表于 2020-9-28 22:35:20

使用python的pyside2模块setstylesheet()方法插背景无法显示

from PySide2.QtWidgets import QApplication, QWidget
import sys
import time

class Window(QWidget):
    def __init__(self):
      super().__init__()

      self.setWindowTitle("Pyside2 Simple Appplication")
       # self.setGeometry(300,300, 500,400)
      self.setMinimumHeight(400)
      self.setMinimumWidth(800)
      self.setMaximumHeight(800)
      self.setMaximumWidth(1600)
      


myApp = QApplication(sys.argv)
window = Window()
window.setStyleSheet("background-color:rgb(230,245,200)")
window.setStyleSheet("background-image:url(D:\BaiduNetdiskDownload\sucai\dingzi.png)")

window.show()
window.resize(600,400)
window.repaint()

myApp.exec_()
sys.exit(0)

疾风怪盗 发表于 2020-9-28 22:56:51

1、利用style sheet给窗体设置背景

    使用stylesheet设置背景图片还是有一些要注意的,如果是在mainwindow和dialog中,直接右键change style sheet在add resource中选择background-image或者border-image,选择资源文件中的图片就行了(前者是按像素显示图片,后者可根据窗体大小来自动缩放图片),如下图:



    但在widget中就不行,你会发现,用同样的方法,背景并没有发生改变,而仅仅是它的子窗体背景图片发生了改变。

    那么在widget中要如何做呢,我们在widget中放置一个frame,然后对frame通过stylesheet设置背景,后面窗体里所有的部件都放在这个frame里。

    我们知道,子窗体会继承父窗体的属性,也就是说,父窗体的背景,在子窗体中也会有,那如何让子窗体不继承父窗体的背景呢,同样的,还是在Edit Style Sheet里,需下输入如下代码:

#desktop {
border-image: url(:/images/desktop.jpg);
}
#desktop * {
border-image:url();
}

    desktop是你的窗体名。

疾风怪盗 发表于 2020-9-28 22:57:26

在窗体中放一个frame试试看

zbs813270556 发表于 2020-9-28 23:21:36

疾风怪盗 发表于 2020-9-28 22:57
在窗体中放一个frame试试看

self.tabWidget = QTabWidget(zu_ui)    QTabWidget()提供了一个选项卡小部件,其包含有选项卡栏和页面区域
      self.tabWidget.setObjectName(u"tabWidget")给其设置Name标示
      self.tab1 = QWidget()    新建窗口标签页tab1
      self.tab1.setObjectName(u"tab1")
      self.gridLayout = QGridLayout(self.tab1)   在标签页tab1中新建一个网格布局变量gridLayout,QGridLayout()用于创建网格变量
      self.gridLayout.setObjectName(u"gridLayout")
      self.groupBox_2 = QGroupBox(self.tab1)   QGroupBox()为构建分组框提供了支持,分组框通常带有一个边框和一个标题栏,(形如excel式管理控件与标签)
      self.groupBox_2.setObjectName(u"groupBox_2")
      self.formLayout_2 = QFormLayout(self.groupBox_2)    QFormLayout()主要就是用来管理输入控件及其关联标签的形式,它以两列的形式列出,左列由标签组成,右列由“字段” 小部件(行编辑器,旋转框等)组成
      self.formLayout_2.setObjectName(u"formLayout_2")
      self.label_12 = QLabel(self.groupBox_2)    QLabel()的功能就是显示文字或者图片,没有用户交互功能   显示标签label_12:定子上层槽顶宽(groups2)
      self.label_12.setObjectName(u"label_12")    设置标签lable_12的标示

已经设置了网格变量,还添加了组,现在就是想给组添加一个背景图,求大神指导

疾风怪盗 发表于 2020-9-29 00:10:57

我不是大神,你这样的代码我运行不了,也不知道怎么改,我一直是用加载UI的方式来做图形化界面的
代码里设置样式,我就弄过背景色的设置,这个简单

要背景图片用desinger来设计吧
添加背景图片:
1、添加Frame组件,在sheetstyle属性中编辑

2、选择backgroud-image,新建一个资源文件,后缀为.qrc

3、添加前缀名字后选择文件

4、如果需要复制,就选择复制,之后确定就可以显示效果
background-image: url(:/resource1/star02.png);


这个步骤有几个图,传图太麻烦了,你要么通过好友申请,加个QQ我把图借给你看

zbs813270556 发表于 2020-9-29 09:40:32

感谢大哥,等级不够加不了好友{:5_100:},用QT设计师作图行界面开发我会,只是这代码不是用加载动态ui图做的,要修改的话大部分代码都要修改,会比较麻烦。我也在csdn上看到Qwidget类的窗口使用setstylesheet()方法好像有问题,好像是要会用mainwindow的窗口才可以。
非常感谢大哥的热心帮助,我Q是813270556,
页: [1]
查看完整版本: 使用python的pyside2模块setstylesheet()方法插背景无法显示