我正在使用PyQt4中的QTableWidget
组件,并且似乎无法根据列各自的头长度正确调整列的大小。
下面是表格布局应该是什么样的(显然,没有管道):
Index | Long_Header | Longer_Header
1 | 102402 | 100
2 | 123123 | 2
3 | 454689 | 18
我正在使用的代码如下所示:
import sys
from PyQt4.QtCore import QStringList, QString
from PyQt4.QtGui import QApplication, QMainWindow, QSizePolicy
from PyQt4.QtGui import QTableWidget, QTableWidgetItem
def createTable():
table = QTableWidget(5, 3)
table.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
headers = QStringList()
headers.append(QString("Index"))
headers.append(QString("Long_Header"))
headers.append(QString("Longer_Header"))
table.setHorizontalHeaderLabels(headers)
table.horizontalHeader().setStretchLastSection(True)
# ignore crappy names -- this is just an example :)
cell1 = QTableWidgetItem(QString("1"))
cell2 = QTableWidgetItem(QString("102402"))
cell3 = QTableWidgetItem(QString("100"))
cell4 = QTableWidgetItem(QString("2"))
cell5 = QTableWidgetItem(QString("123123"))
cell6 = QTableWidgetItem(QString("2"))
cell7 = QTableWidgetItem(QString("3"))
cell8 = QTableWidgetItem(QString("454689"))
cell9 = QTableWidgetItem(QString("18"))
table.setItem(0, 0, cell1)
table.setItem(0, 1, cell2)
table.setItem(0, 2, cell3)
table.setItem(1, 0, cell4)
table.setItem(1, 1, cell5)
table.setItem(1, 2, cell6)
table.setItem(2, 0, cell7)
table.setItem(2, 1, cell8)
table.setItem(2, 2, cell9)
return table
if __name__ == '__main__':
app = QApplication(sys.argv)
mainW = QMainWindow()
mainW.setMinimumWidth(300)
mainW.setCentralWidget(createTable())
mainW.show()
app.exec_()
当应用程序执行时,第一列相当宽,而其他列有点压缩。
有没有办法强制表根据页眉宽度而不是数据本身调整大小?更好的是,有没有办法强制每个列宽都是数据和标题值的最大宽度?
更新:我试图在表上调用resizeColumnsToContents()
,但是视图变得非常混乱:
Python Table http://img514.imageshack.us/img514/8633/tablef.png
**Update2**:resizeColumnsToContents()
只要在所有单元格和标题都插入到表中之后调用它,就可以正常工作。
应该为这个具体的例子做些技巧。
如果您还没有为PyQt documentation添加书签(在您寻找特定函数时很方便)。
相关问题 更多 >
编程相关推荐