Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
17 / 17 / 0
Регистрация: 26.02.2013
Сообщений: 497
PySide

QML: Странный глюк в моей модели ?

15.02.2021, 18:11. Показов 1475. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, всезнающий All !

Когда из qml вызывается функция setData, она, почему-то, меняет не только self._items но и self._all_items ! Но это ведь разные списки - не пойму как так то ?

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
class cl_List_model(QAbstractListModel):
    def __init__(self, items, parent=None):
        QAbstractListModel.__init__(self, parent)
        self._items = items
        self._all_items = items[:]
        self._search_str = ''
 
    def roleNames(self):
        return {Qt.UserRole + 0: QByteArray(b'item_name'), Qt.UserRole + 1: QByteArray(b'item_selected')}
 
    def rowCount(self, parent=None):
        return len(self._items)
 
    def data(self, index, role=None):
        role = role or QModelIndex()
        if role == Qt.UserRole + 0:
            return self._items[index.row()]['item_name']
        if role == Qt.UserRole + 1:
            return self._items[index.row()]['item_selected']
 
    def setData(self, index, val, role=Qt.UserRole + 1):
        if role == Qt.UserRole + 1:
            self._items[index.row()]['item_selected'] = not self._items[index.row()]['item_selected']
            self.dataChanged.emit(index, index, Qt.UserRole + 1)
            return True
        return False
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2021, 18:11
Ответы с готовыми решениями:

Странный глюк
Есть небольшая база, самая простая форма в поле которой храниться несколько аттачментов. Доступ у всех к базе как Editor. А теперь...

Странный глюк
Может кто-нибудь сталкивался? Есть БД, в основе интерфейса фрейм, в одной половине, которого навигация по видам, реализованная через...

Странный глюк
Вроде-бы ни каких процессов нет а проц всё равно загружен а 30%. Знает кто что это такое?

2
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,688
Записей в блоге: 29
15.02.2021, 18:31
Лучший ответ Сообщение было отмечено BVladimir2 как решение

Решение

BVladimir2, глюки бывают редко, чаще наше непонимание.
Пришла пора тебе познакомиться с копиями, глубокими и не очень

когда ты создаешь копию, питон постарается сделать как можно меньше работы, то есть список то он создаст, только вот внутрь поместит ссылки на содержимое первого списка, делать их копии (копии объектов из первого списка) он не будет.

И пока ты использовал неизменяемые типы данных (пример ниже с интами) то никаких проблем и не было. Но вот если в списке что-то изменяемое и ты бы не хотел, чтобы во втором списке была ссылка на тот же объект то нужно потрудиться.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> first = [1,2,3]
>>> second = first[:]
>>> first[0]=0
>>> first
[0, 2, 3]
>>> second
[1, 2, 3]
>>> first = [[1,2],[1,2]]  # mutable type !!!
>>> second = first[:]
>>> first[0].append(3)
>>> first
[[1, 2, 3], [1, 2]]
>>> second
[[1, 2, 3], [1, 2]]
>>> from copy import deepcopy
>>> first = [[1,2],[1,2]]
>>> second = deepcopy(first)
>>> first[0].append(3)
>>> first
[[1, 2, 3], [1, 2]]
>>> second
[[1, 2], [1, 2]]
1
17 / 17 / 0
Регистрация: 26.02.2013
Сообщений: 497
15.02.2021, 18:55  [ТС]
Точно, про copy я и забыл...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2021, 18:55
Помогаю со студенческими работами здесь

Странный Глюк
Приветствую всех! Недавно появился странный глюк на компе. Ползунки для прокрутки страниц и изображений стали сами двигаться. Мешает просто...

Странный глюк
Перестал работать один простой запрос, все вроде правильно сделал и раньше работало как положено. Пишет - "ошибочный аргумент". В...

Странный глюк?
Доброго времени суток! Опишу по порядку. У меня ОС: ХП СП3; Антивирус: Др.Вэб В бухгалтерии слетел winlogon, дабы его поправить...

Странный глюк с браузером
Видеокарта GTX 560 и винт на 500 гиг перешли со старого компа на новый. Винт как хранилище данных, винда на ssd. Комп новый, а проблемы...

AnimateWindow странный глюк
Привет всем. Даже не знаю может у кого то будут хотя бы предположения, что это за фигня такая. Вообщем у меня есть окно главного...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru