我需要制作一个可调整大小的窗口,该窗口分为四个相同的部分。每个部分都应包含我的内容。
我想看的东西(图片):
答案 0 :(得分:1)
您必须分别使用QGridLayout
,setRowStretch()
方法使用setColumnStretch()
,每一行和每一列的长度都为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_())
输出:
答案 1 :(得分:0)
使用PyQt5-designer,在窗口中放置4个“框架”。然后,在窗口上单击鼠标右键,然后在“布局”下选择“在网格中进行布局”。
这样,框架应自行调整大小,如果未按2x2布局,则可以在设计器内对其进行重组。您可以在框架中放置更多小部件。