Grundsätzliche Frage zu Qt

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Benutzeravatar
__blackjack__
User
Beiträge: 14328
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Da ist ziemlich Sicherheit an einer Eigenschaft herumgedreht worden. Also neben der Schriftart/bold. Wie man die findet habe ich ja bereits geschrieben.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Benutzeravatar
StMan
User
Beiträge: 46
Registriert: Sonntag 11. Januar 2026, 17:48

@ __blackjack__
hier sind alle Propertys zu dem QListWidget.
self.DBView = QListWidget(self.centralwidget)
self.DBView.setObjectName(u"DBView")
self.DBView.setGeometry(QRect(330, 100, 180, 110))
font2 = QFont()
font2.setWeight(QFont.DemiBold)
self.DBView.setFont(font2)
self.DBView.setFrameShape(QFrame.Shape.Box)
self.DBView.setLineWidth(2) self.DBView.setSizeAdjustPolicy(QAbstractScrollArea.SizeAdjustPolicy.AdjustIgnored)
self.DBView.setEditTriggers(QAbstractItemView.EditTrigger.EditKeyPressed|QAbstractItemView.EditTrigger.SelectedClicked)
self.DBView.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
self.DBView.setTextElideMode(Qt.TextElideMode.ElideMiddle)
self.DBView.setSpacing(-1)
self.DBView.setModelColumn(0)
self.DBView.setSelectionRectVisible(False)
Gruß Manfred
Benutzeravatar
snafu
User
Beiträge: 6955
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich habe das mal mit PySide6 unter Windows ausprobiert und ebenfalls zu große Abstände zwischen den Einträgen. Geholfen hat bei mir nur ein Setzen des Size Hint für jeden einzelnen Eintrag. Zur Vereinfachung kann man sich eine abgeleitete Klasse dafür erstellen:

Code: Alles auswählen

import sys
from PySide6.QtCore import QSize
from PySide6.QtWidgets import QApplication, QListWidgetItem, QListWidget

class ListWidget(QListWidget):
    def __init__(self, items=None, item_height=20, parent=None):
        super().__init__(parent)
        self.item_height = item_height
        if items:
            self.addItems(items)

    def addItem(self, label):
        item = QListWidgetItem(label)
        item.setSizeHint(QSize(0, self.item_height))
        super().addItem(item)

    def addItems(self, labels):
        for label in labels:
            self.addItem(label)


def main():
    app = QApplication(sys.argv)
    list_widget = ListWidget(["Spam", "Ham", "Eggs"])
    list_widget.show()
    sys.exit(app.exec())

if __name__ == "__main__":
    main()
EDIT: Scheint aber auch direkt auf einem QListWidget mittels setSpacing(-5) zu funktionieren. Allerdings überlappt dann der andersfarbige Hintergrund beim Markieren von Elementen, weil der wohl nicht dementsprechend verkleinert wurde. Wirklich schön ist das beides nichts.
Benutzeravatar
StMan
User
Beiträge: 46
Registriert: Sonntag 11. Januar 2026, 17:48

:D Spacing -5 funktioniert bei mir gut
Gruß Manfred
Benutzeravatar
__blackjack__
User
Beiträge: 14328
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ja, vielleicht bei Dir, aber das macht die GUI bei anderen kaputt. Es sollte keinen Grund geben von der Voreinstellung 0 abzuweichen, schon gar nichts ins negative.

Bei mir habe ich das nicht so komisch. Dazu müsste ich `spacing` _hoch_ stellen um das so aufgeblasen darzustellen. Der Defaultwert davon ist 0. Das negativ zu machen, also -5, macht das im Grunde unbenutzbar. Das sieht dann so aus:
Bild
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Benutzeravatar
StMan
User
Beiträge: 46
Registriert: Sonntag 11. Januar 2026, 17:48

wo kann ich die farbe für den Cursorbalken einstellen, bei mir ist er hellgrau und kaum zu sehen.
Gruß Manfred
Benutzeravatar
StMan
User
Beiträge: 46
Registriert: Sonntag 11. Januar 2026, 17:48

ist doch OK, möchte nur noch eine andere Farbe. Wie kann ich die ändern?
Bild
Gruß Manfred
Benutzeravatar
snafu
User
Beiträge: 6955
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@StMan
Mal so ganz grundsätzlich: Man kann auch ein anderes Theme benutzen. Eine Liste aller verfügbaren Themes erhältst du mit ``print(QStyleFactory().keys())``. Ein anderes Theme stellt man mit der setStyle()-Mehode des QApplication-Objekts ein, indem man den Namen des Themes als String übergibt. Mir ist aufgefallen, dass eigentlich nur beim Theme "windows11" dieser große Abstand gesetzt wird. Somit dürfte dann auch dieser unschöne spacing-Hack nicht mehr notwendig sein.
Antworten