如何在QWidget周围添加边框?

问题描述 投票:0回答:2

我正在使用

PyQT4
为潜在客户创建示例应用程序。我正在寻找某种方法来在特定小部件周围放置边框。请给我一些寻找的指示。

更新了:

class CentralWidget(QtGui.QWidget):

    def __init__(self, mainWindow):
        super(CentralWidget, self).__init__()

        self.create(mainWindow)

上面的代码定义了小部件。

python pyqt4
2个回答
16
投票

根据样式表文档,QWidget 不支持 border 属性(但自从这个答案最初于 2011 年发布以来,它似乎已经发生了变化)。

如果您的小部件是其他小部件的容器,那么您应该使用 QFrame,因为它将允许您调用

setFrameStyle
setLineWidth
。它比调用
setStyleSheet
更可取,因为样式表将使所有子部件继承 border 属性。

这是一个完整的例子:

from PyQt4 import QtGui,QtCore

class CentralWidget(QtGui.QFrame):

    def __init__(self, *args):
        super(CentralWidget, self).__init__(*args)
        # use for a non-contaner widget
        self.setStyleSheet("background-color: rgb(255,0,0); margin:5px; border:1px solid rgb(0, 255, 0); ")
        # use for a container widget
        self.setFrameStyle(QFrame.StyledPanel | QFrame.Plain)
        self.setLineWidth(1)
        
if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    mw = QtGui.QMainWindow()
    w = CentralWidget(mw)
    mw.setCentralWidget(w)
    mw.show()
    w.show()
    app.exec_()

3
投票

你可以像这样使用setFramStyle

 self.setFrameStyle(QFrame.StyledPanel | QFrame.Plain)
 self.setLineWidth(1)

欲了解更多信息,请查看以下链接 https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/QFrame.html

© www.soinside.com 2019 - 2024. All rights reserved.