使用 QGridLayout addWidget(QWidget,x,y) 进行位置操作的问题
Issues with position manipulation using QGridLayout addWidget(QWidget,x,y)
这是一个非常简单的问题,我是 PyQt5 的新手,对 QGridLayout 的工作原理有点困惑...
def init_main_page(self):
layout = QGridLayout()
b1 = buttons.QPushButton("0",self.main_page)
b2 = buttons.QPushButton("1",self.main_page)
b3 = buttons.QPushButton("2",self.main_page)
layout.addWidget(b1,0,0)
layout.addWidget(b2,5,0)
layout.addWidget(b3,1,0)
self.main_page.setLayout(layout)
我遇到的问题是,无论我在 addwidget(QWidget,x,y) 中将 x 和 y 参数设置多高,b1 b2 和 b3 始终保持彼此等距。我正在尝试弄清楚如何在保持比例设置的同时操纵按钮的位置(因此避免了 QPushButton.move()),据我所知,QGridLayout 是执行此操作的最佳方法。
通过 "skipping" 行或列设置网格布局中小部件的坐标几乎没有用,因为这些网格坐标仅告诉布局管理器 "slots" 小部件将位于:因为第 2 到 4 行没有任何内容,所以 space 将不会被使用。
要实现您想要的效果,您需要设置 stretch factors 并可能对指定的行使用最小高度。
layout.addWidget(b1, 0, 0)
layout.addWidget(b3, 1, 0)
layout.addWidget(b2, 2, 0)
layout.setRowStretch(2, 1)
layout.setRowMinimumHeight(2, 50)
但这可能不是您想要的,因为它将第三个按钮放置在行网格的垂直中心(在底部留空 space)。
为了避免这种情况,有两种可能的解决方案:
通过将对齐方式设置为底部来添加小部件:
layout.addWidget(b2, 2, 0, alignment=QtCore.Qt.AlignBottom)
将最后一个小部件添加到第四行,并为第三个空行设置拉伸和最小高度。
layout.addWidget(b2, <b>3</b>, 0)
layout.setRowStretch(<b>2</b>, 1)
layout.setRowMinimumHeight(<b>2</b>, 50)
这是一个非常简单的问题,我是 PyQt5 的新手,对 QGridLayout 的工作原理有点困惑...
def init_main_page(self):
layout = QGridLayout()
b1 = buttons.QPushButton("0",self.main_page)
b2 = buttons.QPushButton("1",self.main_page)
b3 = buttons.QPushButton("2",self.main_page)
layout.addWidget(b1,0,0)
layout.addWidget(b2,5,0)
layout.addWidget(b3,1,0)
self.main_page.setLayout(layout)
我遇到的问题是,无论我在 addwidget(QWidget,x,y) 中将 x 和 y 参数设置多高,b1 b2 和 b3 始终保持彼此等距。我正在尝试弄清楚如何在保持比例设置的同时操纵按钮的位置(因此避免了 QPushButton.move()),据我所知,QGridLayout 是执行此操作的最佳方法。
通过 "skipping" 行或列设置网格布局中小部件的坐标几乎没有用,因为这些网格坐标仅告诉布局管理器 "slots" 小部件将位于:因为第 2 到 4 行没有任何内容,所以 space 将不会被使用。
要实现您想要的效果,您需要设置 stretch factors 并可能对指定的行使用最小高度。
layout.addWidget(b1, 0, 0)
layout.addWidget(b3, 1, 0)
layout.addWidget(b2, 2, 0)
layout.setRowStretch(2, 1)
layout.setRowMinimumHeight(2, 50)
但这可能不是您想要的,因为它将第三个按钮放置在行网格的垂直中心(在底部留空 space)。
为了避免这种情况,有两种可能的解决方案:
通过将对齐方式设置为底部来添加小部件:
layout.addWidget(b2, 2, 0, alignment=QtCore.Qt.AlignBottom)
将最后一个小部件添加到第四行,并为第三个空行设置拉伸和最小高度。
layout.addWidget(b2, <b>3</b>, 0)
layout.setRowStretch(<b>2</b>, 1)
layout.setRowMinimumHeight(<b>2</b>, 50)