bin Anfänger bei pyqt und beschäftige mich seit ein paar Tagen damit.
Ich möchte eine Tabelle mit Inhalt befüllen, eine feste Column-Breite pro Column vorgeben und eine flexible Zeilenhöhe.
Hier habe ich mal den Code, mit dem ich mich beschäftige:
Code: Alles auswählen
class MyTableWidget(QtGui.QTableWidget):
    def __init__(self, x, y, parent = None):
        super(MyTableWidget, self).__init__(x, y, parent)
        self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        # To force the width to use sizeHint().width()
        self.setSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Preferred)
        # To readjust the size automatically...
        # ... when columns are added or resized
        self.horizontalHeader().geometriesChanged.connect(self.updateGeometryAsync)
        self.horizontalHeader().sectionResized.connect(self.updateGeometryAsync)
        # ... when a row header label changes and makes the
        # width of the vertical header change too
        self.model().headerDataChanged.connect(self.updateGeometryAsync)
    def updateGeometryAsync(self):
        QtCore.QTimer.singleShot(0, self.updateGeometry)
    def sizeHint(self):
        height = QtGui.QTableWidget.sizeHint(self).height()
        height += self.horizontalScrollBar().height()
        # length() includes the width of all its sections
        width = self.horizontalHeader().length()
        # you add the actual size of the vertical header and scrollbar 
        # (not the sizeHint which would only be the preferred size)
        width += self.verticalHeader().width()
        width += self.verticalScrollBar().width()
        # and the margins which include the frameWidth and the extra
        # margins that would be set via a stylesheet or something else
        margins = self.contentsMargins()
        width += margins.left() + margins.right()
        return QtCore.QSize(width, height)
if __name__ == "__main__":
    import sys
    LABEL = ['Position', 'Lieferant', 'Artikelnummer', 'Benennung', 'Hersteller', 'Herstellermummer', 'VE', 'Inhalt']
    _LIST_ = [
        ['001', 'Meyer', '47110', 'Bratwurst weiss, 125 g / Stück, 50% Schweinefleisch, 50% Rindfleisch', 'Müller', '0012347110', 'Pack', '100'],
        ['002', 'Meyer', '47120', 'Bratwurst weiss, 175 g / Stück, 50% Schweinefleisch, 50% Rindfleisch', 'Müller', '0012347120', 'Pack', '100'],
        ['003', 'Meyer', '47121', 'Bratwurst weiss, 175 g / Stück, 50% Schweinefleisch, 50% Rindfleisch, Palettenware 100000 Stück, verpackt zu 100 Stück / Pack, vakuumverpackt', 'Müller', '0012347121', 'Palette', '100000'],
        ]
    width2columns = [10, 15, 20, 40, 15, 20, 10, 10]
    app = QtGui.QApplication(sys.argv)  
    #app.setApplicationName('MyWindow')
    view = MyTableWidget(0, 0)        # rows, columns
    view.setRowCount(len(_LIST_)) 
    view.setColumnCount(len(_LIST_[0])) 
    view.setHorizontalHeaderLabels(LABEL)
    header = view.horizontalHeader()
    for i, name in enumerate(LABEL):
        header.setResizeMode(QtGui.QHeaderView.ResizeToContents)
        header.setResizeMode(i, QtGui.QHeaderView.Stretch)
        #header.setResizeMode(i, width2columns[i])
    for y, row in enumerate(_LIST_): 
        for x, col in enumerate(row):
            item = QtGui.QTableWidgetItem(col) 
            view.setItem(y, x, item)
    view.show()
    sys.exit(app.exec_())Vielleicht könnt Ihr mir dabei helfen, aufzuzeigen was grundsätzlich falsch ist und mich in die richtige Richtung bringen.
Grüße Nobuddy
