【问题标题】:How do I add a layout to a Qtablewidget in pyqt?如何在 pyqt 中向 Qtablewidget 添加布局?
【发布时间】:2017-05-10 05:16:24
【问题描述】:

我的 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 上尝试过这种布局,效果很好。

【问题讨论】:

    标签: python python-2.7 pyqt pyqt4 pyside


    【解决方案1】:

    添加{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_())
    

    仅水平:

    仅垂直:

    垂直和水平:

    【讨论】:

    • 非常感谢这个例子!节日快乐,圣诞快乐。
    猜你喜欢
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2011-07-30
    • 1970-01-01
    • 2021-11-26
    • 2012-08-14
    • 2022-01-09
    相关资源
    最近更新 更多