【问题标题】:How do I make a split window?如何制作拆分窗口?
【发布时间】:2019-07-16 21:01:01
【问题描述】:

我需要制作一个可调整大小的窗口,它被分成四个相同的部分。每个部分都应该包含我的内容。

我想看到的(图片):

【问题讨论】:

  • 以后,能否请您包括您已经尝试过的事情?

标签: python python-3.x pyqt pyqt5


【解决方案1】:

您必须分别使用setRowStretch()setColumnStretch() 方法在每行和每列中使用QGridLayout 和1。

例子:

from PyQt5 import QtCore, QtGui, QtWidgets


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

        central_widget = QtWidgets.QWidget()
        self.setCentralWidget(central_widget)

        self.m_w11 = QtWidgets.QWidget()
        self.m_w12 = QtWidgets.QWidget()
        self.m_w21 = QtWidgets.QWidget()
        self.m_w22 = QtWidgets.QWidget()

        lay = QtWidgets.QGridLayout(central_widget)

        for w, (r, c) in zip(
            (self.m_w11, self.m_w12, self.m_w21, self.m_w22),
            ((0, 0), (0, 1), (1, 0), (1, 1)),
        ):
            lay.addWidget(w, r, c)
        for c in range(2):
            lay.setColumnStretch(c, 1)
        for r in range(2):
            lay.setRowStretch(r, 1)

        lay = QtWidgets.QVBoxLayout(self.m_w11)
        lay.addWidget(QtWidgets.QTextEdit())

        lay = QtWidgets.QVBoxLayout(self.m_w12)
        lay.addWidget(QtWidgets.QTableWidget(4, 4))

        lay = QtWidgets.QVBoxLayout(self.m_w21)
        lay.addWidget(QtWidgets.QLineEdit())

        lay = QtWidgets.QVBoxLayout(self.m_w22)
        lay.addWidget(QtWidgets.QLabel("Text", alignment=QtCore.Qt.AlignCenter))


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())

输出:

【讨论】:

    【解决方案2】:

    使用 PyQt5 设计器,在窗口中放置 4 个“框架”。然后右键单击窗口,在“布局”下,选择“在网格中布局”。

    这样,框架应该会自行调整大小,如果它们不是 2x2 布局,您可以在设计器中重新组织它们。您可以在框架中放置更多小部件。

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      相关资源
      最近更新 更多