Grundsätzliche Frage zu Qt
- __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
@ __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)
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
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:
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.
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()- __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:

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:

„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
@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.
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.

