QHBoxLayout(大小、调整大小、移动)

QHBoxLayout (size, resize, move)

任务:

例如(下面的代码)我们创建了 QHBoxLayout,其中有两个按钮。

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QHBoxLayout, QApplication)
class Example(QWidget):
    
        def __init__(self):
            super().__init__()
    
            hbox = QHBoxLayout()
            okButton = QPushButton("OK")
            cancelButton = QPushButton("Cancel")
            hbox.addWidget(okButton)
            hbox.addWidget(cancelButton)
            self.setLayout(hbox)
    
            self.setGeometry(100, 100, 500, 500)
            self.show()
    
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

需要:

设置 hbox (QHBoxLayout) (W_pix, H_pix) 的大小及其坐标 (X_pos, Y_pos) 主要 window(它们不适合,我在 QHBoxLayout、QWidget 的描述文档中没有找到此类函数)。

v.2

import sys

from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import QRect
from PyQt5.QtWidgets import (QWidget, QPushButton,
                             QHBoxLayout, QApplication, QMainWindow, QVBoxLayout)

class Example(QMainWindow):

    def __init__(self):
        super().__init__()
        self.hbox = QVBoxLayout()
        self.okButton = QPushButton("OK")
        self.cancelButton = QPushButton("Cancel")
        self.hbox.addWidget(self.okButton)
        self.hbox.addWidget(self.cancelButton)

        self.setGeometry(100, 100, 500, 500)
        self.setLayout(self.hbox)
        self.hbox.setGeometry(QtCore.QRect(200, 200, 300, 300))
        self.show()

app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

QXLayout 不是可视元素,因此不能直接应用建立几何(位置和大小),而必须对其进行解释。

QHBoxLayout 的任务是使用 sizeHint、sizePolicy、最小和最大尺寸等信息水平分布小部件,并将使用提供小部件所在位置的最大可用大小。

考虑到最后一点,您可以将您的要求外推到该小部件,因为如前所述,处理布局的几何图形就是该小部件的几何图形。所以在这种情况下,创建了一个用作容器的 QWidget。

from PyQt5.QtWidgets import QApplication, QHBoxLayout, QMainWindow, QPushButton, QWidget


class Example(QMainWindow):
    def __init__(self):
        super().__init__()

        x_pos, y_pos = 10, 10
        w_pix, h_pix = 150, 150

        container = QWidget(self)
        container.setContentsMargins(0, 0, 0, 0)
        container.setFixedSize(w_pix, h_pix)
        container.move(x_pos, y_pos)
        container.setStyleSheet("background-color:salmon;")

        hbox = QHBoxLayout(container)
        hbox.setContentsMargins(0, 0, 0, 0)

        self.okButton = QPushButton("OK")
        self.cancelButton = QPushButton("Cancel")

        hbox.addWidget(self.okButton)
        hbox.addWidget(self.cancelButton)

        self.resize(640, 480)


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())