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())
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