2010-07-04 16 views
7

मैं PyQt4 में QTableWidget घटक के साथ काम कर रहा हूँ और मैं उनके संबंधित हैडर लंबाई के अनुसार, सही ढंग से आकार करने के लिए कॉलम प्राप्त नहीं कर पा रहे।सेट न्यूनतम स्तंभ चौड़ाई 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() काम करता है ठीक जब तक यह कहा जाता है के बाद सभी कक्षों और शीर्षकों को तालिका में डाला गया है।

उत्तर

8
table.resizeColumnsToContents() 

इस विशिष्ट उदाहरण के लिए चाल करना चाहिए।

PyQt documentation को बुकमार्क करना सुनिश्चित करें यदि आपने पहले से ऐसा नहीं किया है (जब आप किसी विशिष्ट फ़ंक्शन की तलाश में हों तो आसान हो)।

+0

उत्तर के लिए धन्यवाद, लेकिन मैंने पहले ही आकार बदलने की कोशिश की है कॉलम ट्यूटेंट्स()। यह डेटा को कॉलम का आकार देता है, और हेडर अपठनीय हो जाते हैं। मेरे पास प्रलेखन मौजूद है (मैं इसे लगातार उपयोग करता हूं), लेकिन मुझे इस परेशानी के मुद्दे का समाधान नहीं मिल रहा है। – bedwyr

+0

@bedwyr: हो सकता है समस्या कहीं और शुरू हो रहा है (एक .ui (डिजाइनर में गुण) फ़ाइल शायद से विरासत?)। मैं यहां समस्या को पुन: पेश नहीं कर सकता (पीईक्यूटी 4.5.4 आईआईआरसी, मैक)। यह आपका उदाहरण कोड है (एक सरल 'table.resizeColumnsToContents()' जोड़ा गया) के साथ ऐसा लगता है: http://img210.imageshack.us/img210/9968/screenshot20100704at225.png – ChristopheD

+0

मैंने सबकुछ हाथ से बनाया है (उपयोग नहीं कर रहा है क्यूटी डिजाइनर), तो संभव है कि मैं कुछ गलत कर रहा हूं: ^) मैं लिनक्स पर 4.7.2 का उपयोग कर रहा हूं, इसलिए यह संभव है कि लिनक्स-पोर्ट में कुछ अलग हो; हालांकि मुझे शक है। समस्या मेरे अंत में सबसे अधिक संभावना है। मैं खुदाई रखूंगा - धन्यवाद! – bedwyr

संबंधित मुद्दे