如何在pyqt中为Qtablewidget添加布局?

时间:2016-12-25 07:30:19

标签: python python-2.7 pyqt pyqt4 pyside

我的qtablewidget定义如下:

def __init__(self, parent = None):
        super(Window, self).__init__(parent)
        QtGui.QWidget.__init__(self)
        QtGui.QTableWidget.setMinimumSize(self, 500, 500)
        QtGui.QTableWidget.setWindowTitle(self, "Custom table widget")
        self.table = QtGui.QTableWidget()
        rowf = 3
        self.table.setColumnCount(3)
        self.table.setRowCount(rowf)
        self.table.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("col1"))
        self.table.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("col2"))
        self.table.setHorizontalHeaderItem(2, QtGui.QTableWidgetItem("col3"))
        self.table.verticalHeader().hide()

        header = self.table.horizontalHeader()
        header.setResizeMode(0, QtGui.QHeaderView.ResizeToContents)
        header.setResizeMode(1, QtGui.QHeaderView.ResizeToContents)
        header.setResizeMode(2, QtGui.QHeaderView.ResizeToContents)

        self.buttonBox = QtGui.QDialogButtonBox(self)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok)

        self.verticalLayout = QtGui.QVBoxLayout(self)
        self.verticalLayout.addWidget(self.table)
        self.verticalLayout.addWidget(self.buttonBox)

        self.buttonBox.accepted.connect(self.close)
        self.buttonBox.rejected.connect(self.close)

我希望我的最终结果看起来类似于下面的图片但是现在,我想要添加的布局并不像我希望的那样安静工作。我是pyqt的初学者。我之前在qlistview上尝试过这种布局,效果很好。

enter image description here

1 个答案:

答案 0 :(得分:0)

添加{your table}.table.horizontalHeader().setStretchLastSection(True)和/或{your table}.verticalHeader().setStretchLastSection(True)

import sys

from PyQt4 import QtGui
from PyQt4 import QtCore


class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        super(Window, self).__init__(parent=parent)
        QtGui.QTableWidget.setMinimumSize(self, 500, 500)
        QtGui.QTableWidget.setWindowTitle(self, "Custom table widget")
        self.table = QtGui.QTableWidget()
        rowf = 3
        self.table.setColumnCount(3)
        self.table.setRowCount(rowf)
        self.table.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("col1"))
        self.table.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("col2"))
        self.table.setHorizontalHeaderItem(2, QtGui.QTableWidgetItem("col3"))
        self.table.horizontalHeader().setStretchLastSection(True)
        # self.table.verticalHeader().setStretchLastSection(True)

        self.buttonBox = QtGui.QDialogButtonBox(self)
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | QtGui.QDialogButtonBox.Ok)

        self.verticalLayout = QtGui.QVBoxLayout(self)
        self.verticalLayout.addWidget(self.table)
        self.verticalLayout.addWidget(self.buttonBox)

        self.buttonBox.accepted.connect(self.close)
        self.buttonBox.rejected.connect(self.close)

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    w = Window()
    w.show()
    sys.exit(app.exec_())

仅水平:

enter image description here

仅垂直:

enter image description here

垂直和水平:

enter image description here

相关问题