Найти - Пользователи
Полная версия: PyQT4 | Как выделить несколько строк QListWidget по списку индексов?
Начало » GUI » PyQT4 | Как выделить несколько строк QListWidget по списку индексов?
1
Kyrym
Метода, выделяяющего стразу несколько строк по их индексам я не нашёл, поэтому сделал цикл выделения по одной строке. Проблема в том, что выделяется последний итем, хотя стоит мультивыделение на лист виджет ((
 self.list_z = QListWidget()
self.list_z.addItems(некий список)
self.list_z.setSelectionMode(2) # мультивыделение
lst_select_index = [2,5,7]
        for i in range(len(lst_select_index)):
            self.list_z.setCurrentRow(lst_select_index[i]) # выделить строку по индексу

Если я кликаю по лист виджет мышкой, то выделяется много строк.
PEHDOM
патамушта setSelectionMode() указывает может ли пользователь выбирать один или несколько элементов, и, если пользователь может выбирать несколько, должен ли это быть непрерывный диапазон.
вы же делаете это программно, тут нужно указывать в setCurrentRow() еще и SelectionModel.
вы опять не читаете документацию? http://doc.crossplatform.ru/qt/4.7.x/qlistwidget-members.html
да и ваш код:
 lst_select_index = [2,5,7]
        for i in range(len(lst_select_index)):
            self.list_z.setCurrentRow(lst_select_index[i])
попахивает мазохизмом, в пайтоне его можно упростить:
 #-*-coding:utf8-*-
from PyQt4.Qt import *
from PyQt4.QtGui import *
import sys
app = QApplication(sys.argv)
l = QListWidget()
l.setSelectionMode(2)
for i in range(10):
    l.addItem('row{}'.format(i))
l.show()
lst_select_index = [2,5,7]
for i in lst_select_index:
    l.setCurrentRow(i, QItemSelectionModel.Select)
print(l.selectedItems())
app.exec_()
Kyrym
PEHDOM
попахивает мазохизмом
Согласен.
PEHDOM
вы опять не читаете документацию?
Уже читаю, там-то я и нашёл метод setCurrentRow, но почему не попробовал поставить второй аргумент - не знаю…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB