2017-01-15 6 views
1

Wie zu ändern QTableWidget Header Schriftart und seinen Inhalt Rand und Abstand? Ich möchte die Schriftart für "Spalte 0", "Spalte 1" verkleinern und keinen Abstand zwischen dem Namen der Spalten und der Kopfzeile haben.Wie das Aussehen von QTableWidget-Header zu steuern

enter image description here

from PyQt4 import QtCore, QtGui 
app = QtGui.QApplication([]) 

columns = ['Column 0', 'Column 1', 'Column 2'] 
items = [['Row%s Col%s'%(row,col) for col in range(len(columns))] for row in range(100)] 

view = QtGui.QTableWidget() 
view.setColumnCount(len(columns)) 
view.setHorizontalHeaderLabels(columns) 
view.setRowCount(len(items)) 
for row, item in enumerate(items): 
    for col, column_name in enumerate(item): 
     item = QtGui.QTableWidgetItem("%s"%column_name) 
     view.setItem(row, col, item)    
    view.setRowHeight(row, 16) 

view.show() 
app.exec_() 
+0

Wollen Sie sagen, dass die Spaltenbreite mit der Breite des Header-Textes übereinstimmen soll, auch wenn der Inhalt der Spalte breiter ist? Denn in Ihrem Screenshot ist die Lücke am oberen Rand der Spalte größer als unten (und wenn Sie eine kleinere Schriftart verwenden, wird der Unterschied noch größer sein). Meinst du auch wirklich * überhaupt keinen Platz * zwischen dem Rand des Headers und seinem Text? Sicherlich muss da etwas Polsterung sein. – ekhumoro

+0

Sicher, ich möchte jetzt, wie Sie die Auffüllung, die wir sehen, von der Kante des Spalten-Headers bis zur Schriftart des Headers selbst steuern (die roten Pfeile). Ich würde auch gerne wissen, wie ich die Schriftgröße der Spaltenkopfzeile und die Eigenschaften der anderen Spaltenkopfzeile steuern könnte. – alphanumeric

Antwort

1

Ich kann keine Möglichkeit finden, die Ränder zu löschen, aber ich kann eine temporäre Abhilfe vorschlagen. Sie können resizeColumnsToContents() versuchen, bevor Sie die Tabelle mit Gegenständen füllen

Für die Schriften, die Sie versuchen können, das nächste

afont = PyQt4.QtGui.QFont() 
afont.setFamily("Arial Black") 
afont.setPointSize(11) 
atable.horizontalHeaderItem(0).setFont(afont) 

zu tun Wenn Sie mehr Familien sehen wollen, können Sie immer Blick auf die verfügbaren von QtDesigner.

Die Header-Elemente sind nichts anderes als QTableWidgetItems. Also alles, was Sie tun müssen, ist Zugriff auf sie und behandeln sie als QTableWidgetItem

Die Answers ist fast identisch mit der vorherigen.

1

können Sie die Schriftgröße mit ändern:

item = QtGui.QTableWidgetItem() 
font = QtGui.QFont() 
font.setPointSize(14) 
item.setFont(font) 

Ich bin nicht sicher, wie Rand und Abstand zu ändern. Ich kann diese Antwort aktualisieren, wenn ich es herausfinde. Ich empfehle, QTDesigner zu verwenden, um mit dem Layout umzugehen.

Edit: In QtDesigner können Sie die horizontale und vertikale mit den Optionen Kopfgröße ändern: horizontalHeaderDefaultSectionSize und verticalHeaderDefaultSectionSize sowie die Header-Schrift durch doble Maustaste darauf und wählen Sie die Schriftart, die Sie in den Eigenschaften möchten. QtDesigner

+0

Wir müssen die Schriftart ändern, die von 'QTableWidget.horizontalHeader()' verwendet wird und nicht die 'QTableWidgetItem.font()' – alphanumeric

+0

Ich habe es geschafft, es in QtDesigner zu tun. Beim Exportieren des Codes waren die Parameter jedoch nicht in der .py-Datei enthalten. – Diego

Verwandte Themen