QTableWidget / Header-css

Alles rund um die Programmierung mit Qt
Antworten
Schleifchen
Beiträge: 3
Registriert: 5. November 2023 10:04

QTableWidget / Header-css

Beitrag von Schleifchen »

Hallo in die Runde, ich versuche mich grad an der Formatierung eines QTableWidgets per CSS.
der Code:

Code: Alles auswählen

from PySide6 import  QtGui
from PySide6.QtWidgets import (QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout, QHeaderView, QFrame)
from PySide6.QtCore import Qt

import sys
 
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 Tabelle")
        self.resize(700, 150)
        self.CreateTable()
        self.style()
        self.show()
        
        
    def style(self):
        # Spaltenbreite:        
        colum_with = 200
        for i in range(3):
            self.table.setColumnWidth(i,colum_with)
            
        # Zeilenhöhe:
        row_hight = 20
        for i in range(3):
            self.table.setRowHeight(i,row_hight) 
            
        
        item = self.table
        # Textausrichtung Header, horizontal:
        for i in range(3):
            self.table.horizontalHeaderItem(i).setTextAlignment(Qt.AlignCenter)
        
        # Textausrichtung Tabelle 
        for i in range(4):
            for x in range(3):
                self.table.item(i, x).setTextAlignment(Qt.AlignCenter)
                
        
        
        # Header/Textfarbe:
        self.table.horizontalHeaderItem(1).setForeground(QtGui.QColor(255, 0, 0))
        # Tabelle Hintergrundfarbe:        
        self.table.setStyleSheet("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #fbf9e3, stop: 1 #E2FCF8);")
        self.table.horizontalHeader().setStyleSheet("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #f7fae6, stop: 1 #fcf9e2);")
        self.table.verticalHeader().setStyleSheet("background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #FCF9E2, stop: 1 #E2FCF8);")
               
        # Header / Border:
        self.table.verticalHeader().setStyleSheet("QHeaderView::section { border-bottom: 1px solid gray; }") # tut leider nix
        
    def CreateTable(self):
        self.table = QTableWidget(4, 3)
        self.table.setHorizontalHeaderLabels(["Name", "Age", "Gender"])
        self.table.setVerticalHeaderLabels(["Person 1","Person 2","Person 3", "Person 4"])

        self.table.setItem(0,0, QTableWidgetItem("Oz"))
        self.table.setItem(0,1, QTableWidgetItem("14"))
        self.table.setItem(0, 2 , QTableWidgetItem("Male"))
        self.table.setColumnWidth(0, 150)
  
        self.table.setItem(1,0, QTableWidgetItem("John"))
        self.table.setItem(1,1, QTableWidgetItem("24"))
        self.table.setItem(1,2, QTableWidgetItem("Male"))
  
        self.table.setItem(2, 0, QTableWidgetItem("Lucy"))
        self.table.setItem(2, 1, QTableWidgetItem("19"))
        self.table.setItem(2, 2, QTableWidgetItem("Female"))
  
        self.table.setItem(3, 0, QTableWidgetItem("Subaru"))
        self.table.setItem(3, 1, QTableWidgetItem("18"))
        self.table.setItem(3, 2, QTableWidgetItem("Male"))

 
        self.vBox = QVBoxLayout()
        self.vBox.addWidget(self.table)
        self.setLayout(self.vBox)
         
 
app = QApplication(sys.argv)
window = Window()
sys.exit(app.exec())
ergibt die Tabelle:
Bild
Wie können die Borders im Header (vertikal und horizontal) gezeichnet werden?

Code: Alles auswählen

        # Header / Border:
        self.table.verticalHeader().setStyleSheet("QHeaderView::section { border-bottom: 1px solid gray; }") # tut leider nix
Danke - Stefan
Antworten