为了账号安全,请及时绑定邮箱和手机立即绑定

pyqt5 border only apply to parent widget问题

pyqt5 border only apply to parent widget问题

临摹微笑 2023-02-22 17:11:54
每个人。我在 pyqt5 中遇到了奇怪的问题。我尝试更改边框但失败了,我在应用边框样式时总是很头疼。我的代码来了。请帮助我from PyQt5.QtWidgets import QWidget,QApplication,QTextEditfrom PyQt5.QtCore import Qtfrom PyQt5 import QtWidgetsimport sysclass SomeWidget(QWidget):    def __init__(self, *args, **kwargs):        super().__init__(*args, **kwargs)        self.setStyleSheet('border:10px solid green')        passclass mainWidget(QWidget):    def __init__(self,**kwargs):        super().__init__(**kwargs)        widget = SomeWidget(self)        widget.setWindowFlags(Qt.FramelessWindowHint|Qt.Window)        widget.resize(self.width()//2,self.height()//2)                widget.show()        # self.setStyleSheet(styles)        passdef test1():    return 0,1if __name__ == "__main__":    app = QApplication(sys.argv)    mw = mainWidget()    mw.show()    sys.exit(app.exec_())        pass
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

这里的问题是 QWidget 类不支持 border 属性(请直接查看此答案Qt 样式表文档)。

也就是说,将 QWidget 更改为 QFrame 可以达到目的:

import sys


from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import QWidget, QApplication, QFrame



class SomeWidget(QFrame):

    def __init__(self, *args, **kwargs):

        super().__init__(*args, **kwargs)

        self.setStyleSheet('border:10px solid green')



class mainWidget(QWidget):

    def __init__(self, **kwargs):

        super().__init__(**kwargs)

        widget = SomeWidget(self)

        widget.setWindowFlags(Qt.FramelessWindowHint | Qt.Window)

        widget.resize(self.width() // 2, self.height() // 2)


        widget.show()



if __name__ == "__main__":

    app = QApplication(sys.argv)

    mw = mainWidget()

    mw.show()


    sys.exit(app.exec_())


查看完整回答
反对 回复 2023-02-22
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

尝试一下:


import sys

from PyQt5.QtWidgets import QWidget, QApplication, QTextEdit

from PyQt5.QtCore import Qt

from PyQt5.Qt import *



class SomeWidget(QWidget):

    def __init__(self, *args, **kwargs):

        super().__init__(*args, **kwargs)

        

#        self.setStyleSheet('background: #0ff; border: 10px solid green')

        

        self.widget = QWidget(self)

        self.widget.setObjectName('Custom_Widget')

        self.widget.setStyleSheet('''

            QWidget#Custom_Widget {

                background: rgba( 255, 155, 155, 170);

                border-radius: 20px;

                border: 10px solid green;                   

            }

        ''')


        self.v = QVBoxLayout(self)

        self.v.setContentsMargins(0, 0, 0, 0)

        self.v.addWidget(self.widget)



class MainWidget(QWidget):

    def __init__(self,**kwargs):

        super().__init__(**kwargs)

        widget = SomeWidget(self)

        widget.setWindowFlags(Qt.FramelessWindowHint | Qt.Window)

        widget.setAttribute(Qt.WA_TranslucentBackground)                # +++

        widget.resize(self.width()//2, self.height()//2)

        

        widget.move(100, 100)                                           # +++

        widget.show()

        

        self.setStyleSheet('background:#00f;')



def test1():     # ???

    return 0,1


if __name__ == "__main__":

    app = QApplication(sys.argv)

    mw = MainWidget()

    mw.show()

    sys.exit(app.exec_())

//img1.sycdn.imooc.com//63f5dc8f0001cfd106570480.jpg

查看完整回答
反对 回复 2023-02-22
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号