QFrame边框不显示
QFrame border is not displayed
我正在尝试使用 QFrame
为一组小部件创建边框。
最终,我未能创建一个纯粹的空框架,如 Qt documentation 中所示(请参阅页面中间的 table)。 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 是一个面板,即绘制一个矩形面板,但尊重当前的 QStyle。如果要绘制矩形面板,则必须使用 QFrame.Panel 选项而不是 QFrame.StylePanel。
window.frame.setFrameStyle(QFrame.Panel | QFrame.Raised)
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)}"
)
我正在尝试使用 QFrame
为一组小部件创建边框。
最终,我未能创建一个纯粹的空框架,如 Qt documentation 中所示(请参阅页面中间的 table)。 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 是一个面板,即绘制一个矩形面板,但尊重当前的 QStyle。如果要绘制矩形面板,则必须使用 QFrame.Panel 选项而不是 QFrame.StylePanel。
window.frame.setFrameStyle(QFrame.Panel | QFrame.Raised)
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)}"
)