我正在尝试使用QFrame为一组小部件创建一个绑定框架。
最终,我未能创建一个仅空的框架,如Qt documentation中所示(请参阅页面中间的表)。 QFrame本身没有问题,但是样式显然无法应用,因此该小部件不可见。

用.setFrameStyle()设置样式



这是一个人为的示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFrame

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = QWidget()
    window.resize(250, 150)
    window.move(300, 300)
    window.setWindowTitle('Sample')

    window.frame = QFrame(window)
    window.frame.setLineWidth(5)
    window.frame.setFrameStyle(QFrame.StyledPanel | QFrame.Raised)
    # window.frame.setStyleSheet("background-color: rgb(200, 255, 255);"
    #                            "border-width: 1;"
    #                            "border-radius: 3;"
    #                            "border-style: solid;"
    #                            "border-color: rgb(10, 10, 10)"
    #                            )

    window.frame.move(20, 20)
    window.show()

    sys.exit(app.exec_())


如果我取消对.setStyleSheet()调用的注释,则会获得某种预期的效果,但是我对使用.setFrameStyle()无法实现相同的效果感到困惑

用.setStyleSheet()设置样式



我正在使用Python 3.7,PyQt 5.11.3

最佳答案

如果它不是您默认的样式的一部分(我想它是“ windows”样式),这不是一个错误,在我的情况下,我使用“ fusion”样式,并且我没有观察到您所指示的行为。

正如@ekhumoro指出的那样,StylePanel是一个Panel,它绘制一个矩形面板,但要遵循当前的QStyle。如果要绘制矩形面板,则必须使用QFrame.Panel选项而不是QFrame.StylePanel。

window.frame.setFrameStyle(QFrame.Panel | QFrame.Raised)

关于python - QFrame边框不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57460143/

10-12 02:52