Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
DarkCrusade
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 29
#1

как получить значение выделенного элемента в QListView?

01.03.2017, 14:11. Просмотров 1124. Ответов 9
Метки нет (Все метки)

Доброго времени суток, подскажите пожалуйста, как получать значение выделенного (или при нажатие на элемент) элемента в компоненте QListView?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2017, 14:11
Ответы с готовыми решениями:

Map, как получить значение итератора
Помогите разобраться, как сохранить взятое значение из списка? Явно что-то не...

Как получить значение введенной переменной
Ввод - Num1, r, Num2 Нужен калькулятор. Предположим, r = + Можно ли сделать...

[Tkinter] Как получить значение переменной из entry?
Tkinter как получить значение переменной из entry

Как получить значение высоты через xpath?
Нужно получить значение из строчек: <div style="margin-top:0px">...

Как получить текст выделенного элемента в listbox
Есть listbox который вставлен у меня так: <asp:ListBox ID="tems"...

9
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
01.03.2017, 19:28 #2
советую указывать версию Qt, иначе можете получить совсем не то, что хотите ;-)
0
DarkCrusade
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 29
01.03.2017, 19:37  [ТС] #3
Цитата Сообщение от Jabbson Посмотреть сообщение
советую указывать версию Qt
я использую PyQt5
0
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
01.03.2017, 20:07 #4
так?

если у Вас model - это QStandardItemModel для QListView,
то привяжите к ней что угодно, например

Python
1
2
3
4
def on_click(s):
    print(s.text())
 
model.itemChanged.connect(on_click)
0
DarkCrusade
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 29
01.03.2017, 20:28  [ТС] #5
Цитата Сообщение от Jabbson Посмотреть сообщение
если у Вас model - это QStandardItemModel для QListView
именно так.
сделал как Вы показали, но не сработало
0
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
01.03.2017, 20:44 #6
сорри, без классов

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import sys
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QListView
 
app = QApplication(sys.argv)
 
lst = QListView()
lst.setWindowTitle('Your List')
 
 
model = QStandardItemModel(lst)
foods = ['Apples', 'Oranges', 'Bananas', 'Carrots', 'Mangos']
 
for food in foods:
    item = QStandardItem(food)
    item.setCheckable(True)
    model.appendRow(item)
 
def on_click(s):
    print(s.text())
 
 
lst.setModel(model)
model.itemChanged.connect(on_click)
 
lst.show()
app.exec_()
0
DarkCrusade
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 29
01.03.2017, 20:58  [ТС] #7
а как сделать без галочек?
0
Jabbson
Эксперт по компьютерным сетям
3348 / 2423 / 746
Регистрация: 03.11.2009
Сообщений: 7,759
Записей в блоге: 3
01.03.2017, 21:04 #8
Лучший ответ Сообщение было отмечено DarkCrusade как решение

Решение

а без галочек вот так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import sys
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from PyQt5.QtWidgets import QApplication, QListView
 
app = QApplication(sys.argv)
 
lst = QListView()
lst.setWindowTitle('Your List')
 
 
model = QStandardItemModel(lst)
foods = ['Apples', 'Oranges', 'Bananas', 'Carrots', 'Mangos']
 
for food in foods:
    item = QStandardItem(food)
    model.appendRow(item)
 
 
def on_click(s1):
    print(s1.indexes()[0].data())
 
 
lst.setModel(model)
lst.selectionModel().selectionChanged.connect(on_click)
 
lst.show()
app.exec_()
1
DarkCrusade
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 29
02.03.2017, 09:39  [ТС] #9
Цитата Сообщение от Jabbson Посмотреть сообщение
а без галочек вот так
я написал тоже самое, что у вас, но у меня это в классе и вот результат:
C:\Users\Vitaly\Documents\Python\Database>python Main.py
Traceback (most recent call last):
File "C:\Users\Vitaly\Documents\Python\Database\Windows\Dialogs\product.py", line 37, in on_click
print(s.text())
AttributeError: 'QItemSelection' object has no attribute 'text'
Добавлено через 26 минут
Цитата Сообщение от DarkCrusade Посмотреть сообщение
я написал тоже самое, что у вас, но у меня это в классе и вот результат:
Нашел, где накосячил)
Спасибо за помощь!
0
dondublon
2137 / 1055 / 212
Регистрация: 17.03.2012
Сообщений: 6,391
Записей в блоге: 5
02.03.2017, 10:09 #10
Цитата Сообщение от Jabbson Посмотреть сообщение
lst.selectionModel()
Только так логически верно.

Обращаю внимание - то, что юзер выделяет, говорится вьюхой, а не моделью. Модель может быть любой, хоть стандартной (QStatdatdItemModel), хоть абстрактной. От модели абстрагируемся.
0
02.03.2017, 10:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2017, 10:09

Как получить имя выделенного элемента listbox?
Заполняю listbox через привязку(binding), теперь нужно записать в переменную...

Как получить индекс предыдущего выделенного элемента в listbox?
Доброго всем дня. Например, Listbox отображает список людей. Люди -...

Как по событию TreeView_SelectedItemChanged получить индекс выделенного элемента
Здравствуйте. Как по событию TreeView_SelectedItemChanged получить индекс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru