鱼C论坛

 找回密码
 立即注册
查看: 3971|回复: 5

[已解决]使用python的pyside2模块setstylesheet()方法插背景无法显示

[复制链接]
发表于 2020-9-28 22:35:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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是你的窗体名。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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是你的窗体名。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-28 22:57:26 | 显示全部楼层
在窗体中放一个frame试试看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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的标示

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 00:10:57 | 显示全部楼层
我不是大神,你这样的代码我运行不了,也不知道怎么改,我一直是用加载UI的方式来做图形化界面的
代码里设置样式,我就弄过背景色的设置,这个简单

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

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

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

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


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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-29 09:40:32 | 显示全部楼层
感谢大哥,等级不够加不了好友,用QT设计师作图行界面开发我会,只是这代码不是用加载动态ui图做的,要修改的话大部分代码都要修改,会比较麻烦。我也在csdn上看到Qwidget类的窗口使用setstylesheet()方法好像有问题,好像是要会用mainwindow的窗口才可以。
非常感谢大哥的热心帮助,我Q是813270556,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 11:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表