için en büyük sütun genişliğini üstbilgi genişliğine ayarlayın. PyQt4'teki QTableWidget
bileşeniyle çalışıyorum ve ilgili başlık uzunluklarına göre doğru boyutta sütunlar elde edemiyorum.PyQt4 QTableWidget
İşte tablo düzeni (besbelli, sans borular) gibi görünmelidir ne:
Index | Long_Header | Longer_Header
1 | 102402 | 100
2 | 123123 | 2
3 | 454689 | 18
ben çalışıyorum kod şöyle görünür:
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_()
uygulama çalıştırır, Diğer sütunlar biraz sıkıştırılırken ilk sütun oldukça geniştir.
Tablonun, veriden ziyade başlık genişliğine göre boyutlandırılması için bir yol var mı? Daha da iyisi, her bir sütun genişliğini, veri ve başlık değerlerinin maksimum genişliği olacak şekilde zorlamak için bir yol var mı?
Güncelleme: Ben masaya resizeColumnsToContents()
arama denedim ancak görünüm korkunç ezilmiş olur:
Python Table http://img514.imageshack.us/img514/8633/tablef.png
** Update2 **: gayet sürece denir olarak resizeColumnsToContents()
eserleri'dan sonra tüm hücreler ve başlıklar tabloya eklenmiştir.
Yanıt için teşekkürler, ancak zaten resizeColumnsToContents() yöntemini denedim. Sütunları veriye yeniden boyutlandırır ve üstbilgiler okunamaz hale gelir. Belgelerin mevcut olması (sürekli kullanıyorum), ancak bu sıkıntı sorununa bir çözüm bulamıyorum. – bedwyr
@bedwyr: Belki de sorun başka bir yerde tetikleniyor (belki de mi? (Tasarımcı) dosyasındaki özellikler mi? Sorunu burada yeniden oluşturamıyorum (PyQt 4.5.4 iirc, Mac). Örnek kodunuz (basit 'table.resizeColumnsToContents()' ile birlikte) şu şekildedir: http://img210.imageshack.us/img210/9968/screenshot20100704at225.png – ChristopheD
Her şeyi el ile tasarladım (kullanma Qt Designer), bu yüzden muhtemelen yanlış yaptığım bir şey: ^) Linux üzerinde 4.7.2 kullanıyorum, bu yüzden Linux-portunda bir şey farklı olabilir; Yine de şüpheliyim. Sorun büyük ihtimalle benim sonumda. Kazmaya devam edeceğim - teşekkürler! – bedwyr