Schlechte Reaktionsfähigkeit eines QScrollbar -Griffs [Duplikat]
Posted: 03 Mar 2025, 17:37
Ich bin mir nicht sicher, was das Problem ist: Ich verwende die Listenansicht und kämpfe mit der Scrollbar. Irgendwie reagiert der Griffteil nicht immer. Manchmal kann ich auf den Griff klicken und schnell an den Ort scrollen, den ich brauche, manchmal kann ich nicht. Ich habe ein MRE daraus gemacht und konnte nicht erkennen, ob es bestimmte Bedingungen gibt, wenn es passiert oder nicht. Ich kann immer mit dem Mausrad scrollen, so dass es keine App -Freeze zu sein scheint. Aber ich kann den Griff nicht immer schnappen und ihn ziehen. MRE ist unten. Ich bin unter Windows 11 und verwende Pyside2. Ich bin mir nicht sicher, ob das Problem auf meiner Maschine liegt (aber was kann für eine Scrollbar falsch sein?) Oder in irgendeiner Weise funktioniert die Bildlaufleiste. Es ist, als ob es nicht immer aktiv ist. < /P>
Code: Select all
import sys
import os
from PySide2.QtGui import QPixmap, QIcon, QStandardItemModel, QStandardItem
from PySide2.QtWidgets import (
QApplication,
QWidget,
QVBoxLayout,
QListView,
)
from PySide2.QtCore import Qt, QDir, QSize
class Example(QWidget):
def __init__(self):
super().__init__()
self.layout = QVBoxLayout(self)
# File list view setup
self.file_list_view = QListView(self)
self.file_list_view.setFixedHeight(200)
self.layout.addWidget(self.file_list_view)
# File model
self.file_model = QStandardItemModel(self)
self.file_list_view.setModel(self.file_model)
# Custom scrollbar style
self.file_list_view.verticalScrollBar().setStyleSheet(
"""
QScrollBar:vertical {
width: 30px;
background-color: transparent;
border: none;
}
QScrollBar::handle:vertical {
background-color: rgb(100,100,100);
border-radius: 5px;
min-height: 50px;
}
QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
border: none;
background: transparent;
}
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
background: transparent;
}
"""
)
def populate_directory_view(self, dir_path):
self.file_model.clear()
self.dir_path = str(dir_path)
# Use os.listdir to get the file names (instead of QDir)
files = os.listdir(self.dir_path)
for file in files:
file_item = QStandardItem(file)
file_item.setTextAlignment(Qt.AlignCenter) # Center the text
file_item.setEditable(False)
self.file_model.appendRow(file_item)
# Set the view mode and remove icons
self.file_list_view.setViewMode(QListView.ListMode)
self.file_list_view.setIconSize(QSize(0, 0))
def reset(self):
self.file_model.clear()
self.dir_path = ""
if __name__ == "__main__":
app = QApplication(sys.argv)
viewer = Example()
viewer.show()
# Test directory path (use any valid directory on your machine)
test_directory = ... # Replace with your own test directory path
viewer.populate_directory_view(test_directory)
sys.exit(app.exec_())