我正在尝试使用QFrame为一组小部件创建一个精心制作的框架。
最后,我未能创建一个空框架,就像在Qt文档中演示的那样(参见页面中间的表)。创建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()

我正在使用Python3.7,PyQt 5.11.3
发布于 2019-08-12 12:00:26
如果它不是默认的样式(我想它是"windows“样式)的一部分,那么这不是一个错误,在我的例子中,我使用”融合“样式,并且我没有观察到您所指示的行为。
正如@ekhumoro所指出的,StylePanel是一个面板,它绘制一个矩形面板,但尊重当前的QStyle。如果希望绘制矩形面板,则必须使用QFrame.Panel选项而不是QFrame.StylePanel。
window.frame.setFrameStyle(QFrame.Panel | QFrame.Raised)发布于 2020-06-09 16:30:46
window.frame.setStyleSheet("QFrame {background-color: rgb(200, 255, 255);"
"border-width: 1;"
"border-radius: 3;"
"border-style: solid;"
"border-color: rgb(10, 10, 10)}"
)https://stackoverflow.com/questions/57460143
复制相似问题