gpt4 book ai didi

python - 无法从 QVBoxLayout 中删除边距

转载 作者:行者123 更新时间:2023-12-04 13:39:56 25 4
gpt4 key购买 nike

我已经设置了一个带有一些文本的图像按钮,但由于一些额外的边距,图像与文本不对齐。我怎样才能摆脱这些边距?我试过设置 setContentsMargins(0,0,0,0)setSpacing(0)在各种组件上,但它似乎不会影响正确的边距。

这是一个演示:

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


class ImageButton(QWidget):
def __init__(self, img_location):
QWidget.__init__(self)
self.img_location = img_location

self.button = QToolButton(self)
self.button.clicked.connect(self.handleButton)
self.button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
self.button.setIcon(QIcon(img_location))
self.button.setIconSize(QSize(300,400))
layout = QVBoxLayout(self)
layout.addWidget(self.button)

def handleButton(self):
print(self.img_location)


app = QApplication([])
window = QMainWindow()
window.resize(800,600)



label_title = QLabel("bob asdfjak f ajksf asljf ajdslf aldskj ksf kslfhadjks lfhiu sofhjaklfsiuod fahklfhadisufaksufhdsuifhosa fasdf afsda")
label_title.setStyleSheet('background-color: yellow')
label_title.setAlignment(Qt.AlignCenter)
label_title.adjustSize()
label_title.setWordWrap(True)

imgbtn = ImageButton("a.png")
imgbtn.setStyleSheet('background-color: green')

layout_box = QVBoxLayout()
layout_box.setContentsMargins(0,0,0,0)
layout_box.setSpacing(0)


layout_box.addWidget(imgbtn, 0, Qt.AlignTop)
layout_box.addWidget(label_title, 0, Qt.AlignTop)
layout_box.setAlignment(Qt.AlignCenter)
layout_box.setSpacing(0)

content = QWidget()
content.setStyleSheet('background-color: blue')
content.setFixedWidth(300)
content.setFixedHeight(400)
content.setLayout(layout_box)

window.setCentralWidget(content)
window.show()
app.exec_()

Screenshot

黄色区域标记文本标签,绿色区域标记图像按钮,蓝色区域标记我试图摆脱的空间。查看黄色区域如何扩展到蓝色区域的大小,最终结果是文本与图像按钮不对齐。

我怎样才能摆脱这个蓝色区域?

最佳答案

该边距是用于将 QToolButton 放置在 ImageButton 内的 QVBoxLayout 的边距,因此解决方案是将其设置为 0 边距:

# ...
class ImageButton(QWidget):
def __init__(self, img_location):
super().__init__(self)
# ...
layout = QVBoxLayout(self)
layout.addWidget(self.button)
layout.setContentsMargins(0, 0, 0, 0)
# ...

关于python - 无法从 QVBoxLayout 中删除边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58885835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com