pyqt5 border only apply to parent widget问题

每个人。我在 pyqt5 中遇到了奇怪的问题。我尝试更改边框但失败了,我在应用边框样式时总是很头疼。我的代码来了。请帮助我


from PyQt5.QtWidgets import QWidget,QApplication,QTextEdit

from PyQt5.QtCore import Qt

from PyQt5 import QtWidgets

import sys




class SomeWidget(QWidget):

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

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

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

        pass


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()

        # self.setStyleSheet(styles)

        pass


def test1():

    return 0,1


if __name__ == "__main__":


    app = QApplication(sys.argv)

    mw = mainWidget()

    mw.show()

    sys.exit(app.exec_())

    

    pass


临摹微笑
浏览 223回答 2
2回答

哈士奇WWW

这里的问题是 QWidget 类不支持 border 属性(请直接查看此答案和Qt 样式表文档)。也就是说,将 QWidget 更改为 QFrame 可以达到目的:import sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import QWidget, QApplication, QFrameclass 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_())

汪汪一只猫

尝试一下:import sysfrom PyQt5.QtWidgets import QWidget, QApplication, QTextEditfrom PyQt5.QtCore import Qtfrom 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,1if __name__ == "__main__":    app = QApplication(sys.argv)    mw = MainWidget()    mw.show()    sys.exit(app.exec_())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python