Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Martin1986
User
Beiträge: 11 Registriert: Freitag 4. September 2020, 10:13
Dienstag 5. März 2024, 12:04
Hallo zusammen,
ich habe eine Frage bzgl. des Ausrichtens einer QCheckBox in einem QTableWidget.
Wie zentriere ich eine QCheckBox horizontal in der ersten Spalte vom TableWidget!
Vielen Dank für eure Hilfe!
Martin
Ich habe ein Minimalbeispiel mit angehängt:
Code: Alles auswählen
import sys
from PyQt5 import QtWidgets, QtCore
class Hauptfenster(QtWidgets.QMainWindow):
"""
Hauptfenster
"""
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
self.setObjectName("Hauptfenster")
self.centralwidget = QtWidgets.QWidget(self)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setRowCount(1)
self.tableWidget.setColumnCount(2)
self.tableWidget.setObjectName("tableWidget")
self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
self.setCentralWidget(self.centralwidget)
def fuelletablewidget(self) -> None:
"""
Fuelle Tablewidget
"""
# CheckBox in Zeile 0 und Spalte 0
checkbox = QtWidgets.QCheckBox(self)
self.tableWidget.setCellWidget(0, 0, checkbox)
# Beispieltext in Zeile 0 und Spalte 1
item = QtWidgets.QTableWidgetItem()
item.setText("test")
item.setTextAlignment(QtCore.Qt.AlignCenter) # Text zentrieren
self.tableWidget.setItem(0, 1, item)
# Table an Fenster anpassen
self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
self.tableWidget.resizeRowsToContents()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Hauptfenster()
window.fuelletablewidget()
window.show()
sys.exit(app.exec_())
Martin1986
User
Beiträge: 11 Registriert: Freitag 4. September 2020, 10:13
Mittwoch 6. März 2024, 08:52
Vielen Dank __deets__, hat super geklappt mit dem Hinweis.
Hier der funktionierende Code:
Code: Alles auswählen
import sys
from PyQt5 import QtWidgets, QtCore
class Hauptfenster(QtWidgets.QMainWindow):
"""
Hauptfenster
"""
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
self.setObjectName("Hauptfenster")
self.centralwidget = QtWidgets.QWidget(self)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
self.tableWidget.setRowCount(1)
self.tableWidget.setColumnCount(2)
self.tableWidget.setObjectName("tableWidget")
self.gridLayout.addWidget(self.tableWidget, 0, 0, 1, 1)
self.setCentralWidget(self.centralwidget)
def fuelletablewidget(self) -> None:
"""
Fuelle Tablewidget
"""
widgetforcheckbox = QtWidgets.QWidget(self)
widgetforcheckbox.setObjectName("widgetforcheckbox")
horizontalLayout = QtWidgets.QHBoxLayout()
spacerItem = QtWidgets.QSpacerItem(1, 1, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
horizontalLayout.addItem(spacerItem)
checkbox = QtWidgets.QCheckBox()
checkbox.setObjectName("checkbox")
horizontalLayout.addWidget(checkbox)
spacerItem1 = QtWidgets.QSpacerItem(1, 1, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
horizontalLayout.addItem(spacerItem1)
widgetforcheckbox.setLayout(horizontalLayout)
self.tableWidget.setCellWidget(0, 0, widgetforcheckbox)
# Text in Zeile 0 und Spalte 1
item = QtWidgets.QTableWidgetItem()
item.setText("test")
item.setTextAlignment(QtCore.Qt.AlignCenter) # Text zentrieren
self.tableWidget.setItem(0, 1, item)
# Table an Fenster anpassen
self.tableWidget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
self.tableWidget.resizeRowsToContents()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Hauptfenster()
window.fuelletablewidget()
window.show()
sys.exit(app.exec_())