[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    [PyQt] Resize the height of the header in QTableWidget
From:       Starglider Developer <starglider.dev () gmail ! com>
Date:       2014-10-23 22:10:33
Message-ID: CAJdNm3-1t8bJT2UvacQRor-tfM2HrZK+q-jg3CFf1JV-fQPCQQ () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi,

I need to resize the header of a QTableWidget, rows and columns is easy.

Here is the sample code I use for testing, the
self.grid.horizontalHeader().setResizeMode(QHeaderView.Fixed) and
self.grid.horizontalHeader().resizeSection( 1, 20 ) should work but it
don't.

Thank you in advance,


    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    import sys

    from PyQt4.QtCore import *
    from PyQt4.QtGui import *

class TagsInputDialog(QDialog):def __init__(self,  parent = None):
    super(TagsInputDialog,  self).__init__(parent)
    self.setWindowTitle('test')
    masterLayout = QVBoxLayout(self)
    self.tags_list = []


    t = QCheckBox()
    # t = QLineEdit()
    t.setMaximumWidth(30)
    d = QHBoxLayout()
    d.addStretch()
    d.addWidget(t)
    d.addStretch()

    masterLayout.addLayout(d)

    btn = QPushButton('test')
    masterLayout.addWidget(btn)
    self.connect(btn, SIGNAL("clicked()"), self.run_click)

    self.grid = QTableWidget()
    masterLayout.addWidget(self.grid)
    self.fill_table()
def run_click(self):
    for linha in range(0, self.grid.rowCount()):
        if self.grid.cellWidget(linha, 0) is not None:
            self.grid.cellWidget(linha, 0).children()
            # for n in dir(self.grid.cellWidget(linha, 0)):
            #     print n
            print '\n\n'
            if self.grid.cellWidget(linha, 0).isChecked() :
                print int(self.grid.item(linha, 0).text())
def fill_table(self):
    self.grid.setSelectionBehavior(QTableWidget.SelectRows)
    self.grid.setSelectionMode(QTableWidget.SingleSelection)
    self.grid.setEditTriggers(QTableWidget.NoEditTriggers)
    self.grid.verticalHeader().setDefaultSectionSize(20)
    self.grid.setAlternatingRowColors (True)
    self.grid.verticalHeader().setVisible(False)
    self.grid.setColumnCount(3)
    self.grid.setHorizontalHeaderLabels(['Data0','Data1','Data2'])
    self.grid.setRowCount(5)

    line = 0
    self.grid.setRowHeight(0,20)
    for n in ['data1','data2','data3','data4','data5']:

        self.grid.setCellWidget(line, 0, self.checkBoxGrid('mark'))
        self.grid.setCellWidget(line, 1, QCheckBox())

        item = QTableWidgetItem()
        self.grid.setItem(line, 2,item )
        item.setText(n)

        line +=1
    # this should work
    self.grid.horizontalHeader().setResizeMode(QHeaderView.Fixed)
    self.grid.horizontalHeader().resizeSection( 1, 20 );

def checkBoxGrid(self, label = ''):
    w = QWidget()
    l = QHBoxLayout(w)
    l.setContentsMargins(0,0,0,0)
    l.addStretch()
    c = QCheckBox(label)
    l.addWidget(c)
    l.addStretch()
    return wdef main():
    app = QApplication(sys.argv)
    form = TagsInputDialog()
    form.show()
    app.exec_()
if __name__ == '__main__':
    main()

[Attachment #5 (text/html)]

<div dir="ltr"><div class="" itemprop="text">

        <p>Hi,<br></p><p>I need to resize the header of a QTableWidget,
rows and columns is easy.</p>

<p>Here is the sample code I use for testing,
the self.grid.horizontalHeader().setResizeMode(QHeaderView.Fixed) and 
self.grid.horizontalHeader().resizeSection( 1, 20 )
should work but it don&#39;t.</p><p>Thank you in advance,</p><p><br></p>

<pre style class=""><code><span class="">    </span><span \
class="">#!/usr/bin/python</span><span class="">  </span><span class=""># -*- coding: \
utf-8 -*-</span><span class="">

    </span><span class="">import</span><span class=""> sys

    </span><span class="">from</span><span class=""> </span><span \
class="">PyQt4</span><span class="">.</span><span class="">QtCore</span><span \
class=""> </span><span class="">import</span><span class=""> </span><span \
class="">*</span><span class="">  </span><span class="">from</span><span class=""> \
</span><span class="">PyQt4</span><span class="">.</span><span \
class="">QtGui</span><span class=""> </span><span class="">import</span><span \
class=""> </span><span class="">*</span><span class="">


</span><span class="">class</span><span class=""> </span><span \
class="">TagsInputDialog</span><span class="">(</span><span \
class="">QDialog</span><span class="">):</span><span class=""> </span><span \
class="">def</span><span class=""> __init__</span><span class="">(</span><span \
class="">self</span><span class="">,</span><span class="">  parent </span><span \
class="">=</span><span class=""> </span><span class="">None</span><span \
class="">):</span><span class="">  super</span><span class="">(</span><span \
class="">TagsInputDialog</span><span class="">,</span><span class="">  \
self</span><span class="">).</span><span class="">__init__</span><span \
class="">(</span><span class="">parent</span><span class="">)</span><span class="">  \
self</span><span class="">.</span><span class="">setWindowTitle</span><span \
class="">(</span><span class="">&#39;test&#39;</span><span class="">)</span><span \
class="">  masterLayout </span><span class="">=</span><span class=""> </span><span \
class="">QVBoxLayout</span><span class="">(</span><span class="">self</span><span \
class="">)</span><span class="">  self</span><span class="">.</span><span \
class="">tags_list </span><span class="">=</span><span class=""> </span><span \
class="">[]</span><span class="">


    t </span><span class="">=</span><span class=""> </span><span \
class="">QCheckBox</span><span class="">()</span><span class="">  </span><span \
class=""># t = QLineEdit()</span><span class="">  t</span><span \
class="">.</span><span class="">setMaximumWidth</span><span class="">(</span><span \
class="">30</span><span class="">)</span><span class="">  d </span><span \
class="">=</span><span class=""> </span><span class="">QHBoxLayout</span><span \
class="">()</span><span class="">  d</span><span class="">.</span><span \
class="">addStretch</span><span class="">()</span><span class="">  d</span><span \
class="">.</span><span class="">addWidget</span><span class="">(</span><span \
class="">t</span><span class="">)</span><span class="">  d</span><span \
class="">.</span><span class="">addStretch</span><span class="">()</span><span \
class="">

    masterLayout</span><span class="">.</span><span class="">addLayout</span><span \
class="">(</span><span class="">d</span><span class="">)</span><span class="">

    btn </span><span class="">=</span><span class=""> </span><span \
class="">QPushButton</span><span class="">(</span><span \
class="">&#39;test&#39;</span><span class="">)</span><span class="">  \
masterLayout</span><span class="">.</span><span class="">addWidget</span><span \
class="">(</span><span class="">btn</span><span class="">)</span><span class="">  \
self</span><span class="">.</span><span class="">connect</span><span \
class="">(</span><span class="">btn</span><span class="">,</span><span class=""> \
SIGNAL</span><span class="">(</span><span class="">&quot;clicked()&quot;</span><span \
class="">),</span><span class=""> self</span><span class="">.</span><span \
class="">run_click</span><span class="">)</span><span class="">

    self</span><span class="">.</span><span class="">grid </span><span \
class="">=</span><span class=""> </span><span class="">QTableWidget</span><span \
class="">()</span><span class="">  masterLayout</span><span class="">.</span><span \
class="">addWidget</span><span class="">(</span><span class="">self</span><span \
class="">.</span><span class="">grid</span><span class="">)</span><span class="">  \
self</span><span class="">.</span><span class="">fill_table</span><span \
class="">()</span><span class="">

</span><span class="">def</span><span class=""> run_click</span><span \
class="">(</span><span class="">self</span><span class="">):</span><span class="">  \
</span><span class="">for</span><span class=""> linha </span><span \
class="">in</span><span class=""> range</span><span class="">(</span><span \
class="">0</span><span class="">,</span><span class=""> self</span><span \
class="">.</span><span class="">grid</span><span class="">.</span><span \
class="">rowCount</span><span class="">()):</span><span class="">  </span><span \
class="">if</span><span class=""> self</span><span class="">.</span><span \
class="">grid</span><span class="">.</span><span class="">cellWidget</span><span \
class="">(</span><span class="">linha</span><span class="">,</span><span class=""> \
</span><span class="">0</span><span class="">)</span><span class=""> </span><span \
class="">is</span><span class=""> </span><span class="">not</span><span class=""> \
</span><span class="">None</span><span class="">:</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">cellWidget</span><span class="">(</span><span \
class="">linha</span><span class="">,</span><span class=""> </span><span \
class="">0</span><span class="">).</span><span class="">children</span><span \
                class="">()</span><span class="">
            </span><span class=""># for n in dir(self.grid.cellWidget(linha, \
0)):</span><span class="">  </span><span class="">#     print n</span><span class="">
            </span><span class="">print</span><span class=""> </span><span \
class="">&#39;\n\n&#39;</span><span class="">  </span><span class="">if</span><span \
class=""> self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">cellWidget</span><span class="">(</span><span \
class="">linha</span><span class="">,</span><span class=""> </span><span \
class="">0</span><span class="">).</span><span class="">isChecked</span><span \
class="">()</span><span class=""> </span><span class="">:</span><span class="">  \
</span><span class="">print</span><span class=""> int</span><span \
class="">(</span><span class="">self</span><span class="">.</span><span \
class="">grid</span><span class="">.</span><span class="">item</span><span \
class="">(</span><span class="">linha</span><span class="">,</span><span class=""> \
</span><span class="">0</span><span class="">).</span><span class="">text</span><span \
class="">())</span><span class="">

</span><span class="">def</span><span class=""> fill_table</span><span \
class="">(</span><span class="">self</span><span class="">):</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">setSelectionBehavior</span><span \
class="">(</span><span class="">QTableWidget</span><span class="">.</span><span \
class="">SelectRows</span><span class="">)</span><span class="">  self</span><span \
class="">.</span><span class="">grid</span><span class="">.</span><span \
class="">setSelectionMode</span><span class="">(</span><span \
class="">QTableWidget</span><span class="">.</span><span \
class="">SingleSelection</span><span class="">)</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">setEditTriggers</span><span class="">(</span><span \
class="">QTableWidget</span><span class="">.</span><span \
class="">NoEditTriggers</span><span class="">)</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">verticalHeader</span><span class="">().</span><span \
class="">setDefaultSectionSize</span><span class="">(</span><span \
class="">20</span><span class="">)</span><span class="">  self</span><span \
class="">.</span><span class="">grid</span><span class="">.</span><span \
class="">setAlternatingRowColors </span><span class="">(</span><span \
class="">True</span><span class="">)</span><span class="">  self</span><span \
class="">.</span><span class="">grid</span><span class="">.</span><span \
class="">verticalHeader</span><span class="">().</span><span \
class="">setVisible</span><span class="">(</span><span class="">False</span><span \
class="">)</span><span class="">  self</span><span class="">.</span><span \
class="">grid</span><span class="">.</span><span class="">setColumnCount</span><span \
class="">(</span><span class="">3</span><span class="">)</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">setHorizontalHeaderLabels</span><span \
class="">([</span><span class="">&#39;Data0&#39;</span><span class="">,</span><span \
class="">&#39;Data1&#39;</span><span class="">,</span><span \
class="">&#39;Data2&#39;</span><span class="">])</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">setRowCount</span><span class="">(</span><span \
class="">5</span><span class="">)</span><span class="">

    line </span><span class="">=</span><span class=""> </span><span \
class="">0</span><span class="">  self</span><span class="">.</span><span \
class="">grid</span><span class="">.</span><span class="">setRowHeight</span><span \
class="">(</span><span class="">0</span><span class="">,</span><span \
class="">20</span><span class="">)</span><span class="">  </span><span \
class="">for</span><span class=""> n </span><span class="">in</span><span class=""> \
</span><span class="">[</span><span class="">&#39;data1&#39;</span><span \
class="">,</span><span class="">&#39;data2&#39;</span><span class="">,</span><span \
class="">&#39;data3&#39;</span><span class="">,</span><span \
class="">&#39;data4&#39;</span><span class="">,</span><span \
class="">&#39;data5&#39;</span><span class="">]:</span><span class="">

        self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">setCellWidget</span><span class="">(</span><span \
class="">line</span><span class="">,</span><span class=""> </span><span \
class="">0</span><span class="">,</span><span class=""> self</span><span \
class="">.</span><span class="">checkBoxGrid</span><span class="">(</span><span \
class="">&#39;mark&#39;</span><span class="">))</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">setCellWidget</span><span class="">(</span><span \
class="">line</span><span class="">,</span><span class=""> </span><span \
class="">1</span><span class="">,</span><span class=""> </span><span \
class="">QCheckBox</span><span class="">())</span><span class="">

        item </span><span class="">=</span><span class=""> </span><span \
class="">QTableWidgetItem</span><span class="">()</span><span class="">  \
self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">setItem</span><span class="">(</span><span \
class="">line</span><span class="">,</span><span class=""> </span><span \
class="">2</span><span class="">,</span><span class="">item </span><span \
                class="">)</span><span class="">
        item</span><span class="">.</span><span class="">setText</span><span \
class="">(</span><span class="">n</span><span class="">)</span><span class="">

        line </span><span class="">+=</span><span class="">1</span><span class="">
    </span><span class=""># this should work</span><span class="">
    self</span><span class="">.</span><span class="">grid</span><span \
class="">.</span><span class="">horizontalHeader</span><span class="">().</span><span \
class="">setResizeMode</span><span class="">(</span><span \
class="">QHeaderView</span><span class="">.</span><span class="">Fixed</span><span \
class="">)</span><span class="">  self</span><span class="">.</span><span \
class="">grid</span><span class="">.</span><span \
class="">horizontalHeader</span><span class="">().</span><span \
class="">resizeSection</span><span class="">(</span><span class=""> </span><span \
class="">1</span><span class="">,</span><span class=""> </span><span \
class="">20</span><span class=""> </span><span class="">);</span><span class="">


</span><span class="">def</span><span class=""> checkBoxGrid</span><span \
class="">(</span><span class="">self</span><span class="">,</span><span class=""> \
label </span><span class="">=</span><span class=""> </span><span \
class="">&#39;&#39;</span><span class="">):</span><span class="">  w </span><span \
class="">=</span><span class=""> </span><span class="">QWidget</span><span \
class="">()</span><span class="">  l </span><span class="">=</span><span class=""> \
</span><span class="">QHBoxLayout</span><span class="">(</span><span \
class="">w</span><span class="">)</span><span class="">  l</span><span \
class="">.</span><span class="">setContentsMargins</span><span class="">(</span><span \
class="">0</span><span class="">,</span><span class="">0</span><span \
class="">,</span><span class="">0</span><span class="">,</span><span \
class="">0</span><span class="">)</span><span class="">  l</span><span \
class="">.</span><span class="">addStretch</span><span class="">()</span><span \
class="">  c </span><span class="">=</span><span class=""> </span><span \
class="">QCheckBox</span><span class="">(</span><span class="">label</span><span \
class="">)</span><span class="">  l</span><span class="">.</span><span \
class="">addWidget</span><span class="">(</span><span class="">c</span><span \
class="">)</span><span class="">  l</span><span class="">.</span><span \
class="">addStretch</span><span class="">()</span><span class="">  </span><span \
class="">return</span><span class=""> w </span><span class="">def</span><span \
class=""> main</span><span class="">():</span><span class="">  app </span><span \
class="">=</span><span class=""> </span><span class="">QApplication</span><span \
class="">(</span><span class="">sys</span><span class="">.</span><span \
class="">argv</span><span class="">)</span><span class="">  form </span><span \
class="">=</span><span class=""> </span><span class="">TagsInputDialog</span><span \
class="">()</span><span class="">  form</span><span class="">.</span><span \
class="">show</span><span class="">()</span><span class="">  app</span><span \
class="">.</span><span class="">exec_</span><span class="">()</span><span class="">

</span><span class="">if</span><span class=""> __name__ </span><span \
class="">==</span><span class=""> </span><span \
class="">&#39;__main__&#39;</span><span class="">:</span><span class="">  \
main</span><span class="">()</span></code></pre>

    </div></div>


[Attachment #6 (text/plain)]

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic