python - 如何控制QSplitter内部的间距

标签 python pyqt pyqt5 qsplitter

下面的代码创建了一个带有QSplitter 的对话窗口。 splitter 的左右两侧分配了一个深色的QWidget。 每个 QWidget 布局的间距都设置为 0(零)(因此应该没有边距)。 对于这些 0 间距布局中的每一个,都添加了一个浅色 QLabel。

我希望 QLabel 填充整个 QWidget,没有间距或边距。所以 QLabel 会扩展并从边延伸到边。理想情况下,我们不会看到 QWidget 的深色。我们如何修改代码,使 QLabel 在 QWidget 中从一个边缘延伸到另一个边缘?

enter image description here

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

app = QApplication([])
window = QDialog()
window.setLayout(QVBoxLayout())
window.resize(400, 250)

splitter = QSplitter(Qt.Horizontal)
window.layout().addWidget(splitter)

for side in ['left', 'right']:
    widget = QWidget()
    widget.setStyleSheet("background-color:gray;")
    widget_layout = QVBoxLayout()
    widget_layout.setSpacing(0)
    widget.setLayout(widget_layout)
    label = QLabel('%s side QLabel' % side.capitalize())
    label.setAlignment(Qt.AlignCenter)
    label.setStyleSheet("background-color:lightgray;")
    widget.layout().addWidget(label)
    splitter.addWidget(widget)

window.show()
sys.exit(app.exec_())

最佳答案

您必须将布局边距设置为 0:

widget_layout.setContentsMargins(0, 0, 0, 0)

代码:

app = QApplication(sys.argv)
window = QDialog()
window.setLayout(QVBoxLayout())
window.resize(400, 250)

splitter = QSplitter(Qt.Horizontal)
window.layout().addWidget(splitter)

for side in ['left', 'right']:
    widget = QWidget()
    widget.setStyleSheet("background-color:gray;")
    widget_layout = QVBoxLayout()
    widget_layout.setContentsMargins(0, 0, 0, 0) # this line
    widget_layout.setSpacing(0)
    widget.setLayout(widget_layout)
    label = QLabel('%s side QLabel' % side.capitalize())
    label.setAlignment(Qt.AlignCenter)
    label.setStyleSheet("background-color:lightgray;")
    label.setContentsMargins(0, 0, 0, 0)
    widget.layout().addWidget(label)
    splitter.addWidget(widget)

window.show()
sys.exit(app.exec_())

截图:

enter image description here

注意: setSpacing() 在这种情况下是不必要的,因为它指示布局内小部件之间的空间,但在这种情况下只有 QLabel 仅在布局中。

关于python - 如何控制QSplitter内部的间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46945438/

相关文章:

python - 如何在 python 中重新格式化字符串?

python - cron 作业不输出到 nohup.out

python - 使用线程时 Pyqt5 GUI 仍然挂起

python - 如何使用opencv将图像显示到PYQT

python - 自定义委托(delegate)项目编辑器小部件出现在错误的位置

python - 使用 urllib 和 pil 调整 url 图像大小

python - 如何将条目中的部分文本加粗并更改其背景颜色?

python - PyQtGraph 打开然后立即关闭

python - PyQt:QDateComboBox setDate 使用字符串?

python - 绘图铅笔断了