我正在使用我正在设计的界面遇到一些程序。简明扼要地解释这个问题有点难,所以我先介绍一下这些元素。我有一个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中,但这与我想要做的事情有冲突。是什么导致奇怪的偏移?我能做些什么来打击它吗?
非常感谢!
答案 0 :(得分:1)
self.layout.setContentsMargins(0, 0, 0, 0)
在SubWidget中。