gpt4 book ai didi

python - PySide:如果我将具有自己布局的自定义小部件添加到父小部件的布局中,它就会有一个偏移量。这是什么原因造成的?

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:00 25 4
gpt4 key购买 nike

我遇到了一个带有我正在设计的界面的程序。简洁地解释这个问题有点困难,所以我首先介绍一下起作用的元素。我有一个 QMainWindow MainWindow,它以 QWidget MainWidget 作为中央小部件。 MainWidget 包含两个小部件:QLabel 和 QWidget SubWidget。 SubWidget 仅包含一个 QLabel。

更好地说明(我希望我正确地表示了继承。无论哪种方式,MainWindow 都继承自 QMainWindow 等):

form (MainWindow::QMainWindow)
|main_widget (MainWidget::QWidget)
||label_1 (QLabel)
||sub_widget (SubWidget::QWidget)
|||label_2 (QLabel)

问题就出在这里; SubWidget 内的标签向右偏移。 An image can be found here .

代码相当简单。我试图尽可能地浓缩它。

import sys
from PySide.QtCore import *
from PySide.QtGui import *

class MainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)

self.main_widget = MainWidget(self)

self.setCentralWidget(self.main_widget)

class MainWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)

self.label_1 = QLabel("Label 1")

self.sub_widget = SubWidget()

self.layout = QVBoxLayout() # Vertical layout.
self.layout.addWidget(self.label_1)
self.layout.addWidget(self.sub_widget)

self.setLayout(self.layout)

class SubWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)

self.label_2 = QLabel("Label 2")

self.layout = QHBoxLayout() # Horizontal layout.
self.layout.addWidget(self.label_2)

self.setLayout(self.layout)

def main():
app = QApplication(sys.argv)
form = MainWindow()
form.show()
app.exec_()

if __name__ == "__main__":
main()

显而易见的解决方案是将 label_2 放在 MainWidget 中,但这与我想要做的相冲突。是什么导致了奇怪的偏移?我能做些什么来对抗它吗?

非常感谢!

最佳答案

self.layout.setContentsMargins(0, 0, 0, 0)

在子窗口小部件中。

http://doc.qt.io/qt-5/qlayout.html#contentsMargins

关于python - PySide:如果我将具有自己布局的自定义小部件添加到父小部件的布局中,它就会有一个偏移量。这是什么原因造成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21742746/

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