Schlechte Reaktionsfähigkeit eines QScrollbar -Griffs [Duplikat]Python

Python-Programme
Anonymous
 Schlechte Reaktionsfähigkeit eines QScrollbar -Griffs [Duplikat]

Post by Anonymous »

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_())

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post