这里是一个使用标准PyQt5的解决方案,我从shoosh的答案中得出:
from PyQt5 import QtWidgets
class QHSeparationLine(QtWidgets.QFrame):
'''
a horizontal separation line\n
'''
def __init__(self):
super().__init__()
self.setMinimumWidth(1)
self.setFixedHeight(20)
self.setFrameShape(QtWidgets.QFrame.HLine)
self.setFrameShadow(QtWidgets.QFrame.Sunken)
self.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
return
class QVSeparationLine(QtWidgets.QFrame):
'''
a vertical separation line\n
'''
def __init__(self):
super().__init__()
self.setFixedWidth(20)
self.setMinimumHeight(1)
self.setFrameShape(QtWidgets.QFrame.VLine)
self.setFrameShadow(QtWidgets.QFrame.Sunken)
self.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
return
如果你想将它添加到网格中:
separator_vertical = separation_lines.QVSeparationLine()
separator_horizontal = separation_lines.QHSeparationLine()
grid = QtWidgets.QGridLayout()
grid.addWidget(your_widget_left_from_vertical_separator, 0, 0, 1, 1,)
grid.addWidget(separator_vertical, 0, 1, 1, 1)
grid.addWidget(your_widget_right_from_vertical_separator, 0, 2, 1, 1,)
grid.addWidget(separator_horizontal, 1, 0, 1, 2)
grid.addWidget(your_widget_below_horizontal_spacer, 2, 0, 1, 2)
请确保在分隔符上不要使用对齐方式,否则可能会导致它们无法按比例缩放问题。
为了展示所有内容,以下是将其添加到窗口的方法:
import sys
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = QtWidgets.QWidget()
widget.setLayout(grid)
widget.show()
sys.exit(app.exec())
setFrameShape()
和setFrameShadow()
。 - Michael Leonard