Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » PyQT4 | Как выделить несколько строк QListWidget по списку индексов? [RSS Feed]

#1 Дек. 19, 2017 12:56:39

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQT4 | Как выделить несколько строк QListWidget по списку индексов?

Метода, выделяяющего стразу несколько строк по их индексам я не нашёл, поэтому сделал цикл выделения по одной строке. Проблема в том, что выделяется последний итем, хотя стоит мультивыделение на лист виджет ((

 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]) # выделить строку по индексу

Если я кликаю по лист виджет мышкой, то выделяется много строк.

Офлайн

#2 Дек. 20, 2017 10:30:54

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

PyQT4 | Как выделить несколько строк QListWidget по списку индексов?

патамушта 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_()



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Дек. 20, 2017 10:32:06)

Офлайн

#3 Дек. 20, 2017 11:27:37

Kyrym
Зарегистрирован: 2016-12-28
Сообщения: 225
Репутация: +  3  -
Профиль   Отправить e-mail  

PyQT4 | Как выделить несколько строк QListWidget по списку индексов?

PEHDOM
попахивает мазохизмом
Согласен.
PEHDOM
вы опять не читаете документацию?
Уже читаю, там-то я и нашёл метод setCurrentRow, но почему не попробовал поставить второй аргумент - не знаю…

Офлайн

  • Начало
  • » GUI
  • » PyQT4 | Как выделить несколько строк QListWidget по списку индексов?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version