0 / 0 / 0
Регистрация: 18.01.2018
Сообщений: 46
PyQt5

Изменение значений ListElement в QML через PyQt5

04.05.2019, 23:44. Показов 1993. Ответов 1

Студворк — интернет-сервис помощи студентам
Всем привет. Ни как ни получается обновить значения координаты на карте в Qml через PyQt5.
Пытаюсь обновить значения ListElement в ListModel
XML
1
2
3
 ListModel {
            id: homePoint
            ListElement {lat: 55.754177; lon: 37.619532}
код qml
XML
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import QtQuick 2.0
import QtPositioning 5.2
import QtLocation 5.3
 
Rectangle {
    width: parent.width
    height: parent.height
 
    Plugin {
        id: myPlugin
        name: "osm"
    }
    //Домашняя точка
    ListModel {
            id: homePoint
            ListElement {lat: 55.754177; lon: 37.619532}
    }
 
    Map {
        id: map
        anchors.fill: parent
        plugin: myPlugin;
        center {
            latitude: 55.754177
            longitude: 37.619532
        }
        zoomLevel: 13
 
        MapItemView {
            model: homePoint
            delegate: MapQuickItem {
 
                coordinate: QtPositioning.coordinate(model.lat, model.lon)
 
                anchorPoint.x: image.width * 1
                anchorPoint.y: image.height
 
                sourceItem: Image {
                    id: image
                    source: "marker.png"
                }
            }
        }
    }
}
Python

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
28
29
30
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QWidget, QApplication, QGridLayout
from PyQt5.QtQuick import QQuickView
 
class MapQml(QQuickView):
    def __init__(self):
        super().__init__()
        self.setSource(QUrl('map2.qml')) # Чтение Qml
 
        #map = self.findChild(QObject, 'map')
        # map.setProperty('lat', 55.579435)
        # map.setProperty('lon', 38.217772)
 
class Dialog(QWidget):
    def __init__(self, parent=None):
        super().__init__()
        self.setGeometry(700, 700, 280, 170)
        grid = QGridLayout()
        self.setLayout(grid)
 
        map_qml = MapQml()
        container = QWidget.createWindowContainer(map_qml, self)
        grid.addWidget(container)
 
if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    Dialog = Dialog()
    Dialog.show()
    sys.exit(app.exec_())
Я пробовал через self.findChild(QObject, ' ') и
пробовал так
Python
1
2
3
    engine = QQmlApplicationEngine()
    context = engine.rootContext()
    context.setContextProperty('markerModel', model)
В Qml я использую Rectangle, так как окошко с картами встраиваю в готовое ui.
Буду рад любой помощи.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.05.2019, 23:44
Ответы с готовыми решениями:

Изменение значений в тексте Label PyQt5
Добрый день. Вопрос такой,есть диалоговое окно и в нем текст и кнопка.По кнопке переходит в функцию и сообственно в функции а именно в...

PyQt5 QML Dynamically Create component
Доброго, getlocaltime! Создавал ли кто-то кастомный QML компонент из python? Суть такова: Есть кастомный QML компонент: import...

В PyQt5 QML QtQuick как обращаться к элементам не по ID, а по его индексу?
например тут, где у каждого TextField свой индекс Rectangle { ListView { id: listView delegate: Item { ...

1
0 / 0 / 0
Регистрация: 18.01.2018
Сообщений: 46
05.05.2019, 17:05  [ТС]
Удалось решить проблему, для Rectangle нужно создать QQuickWidget()
Python
1
2
3
4
w = QQuickWidget()
w.setSource(QUrl('main.qml'))
context = w.rootContext()
context.setContextProperty('markerModel', model)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2019, 17:05
Помогаю со студенческими работами здесь

В PyQt5 QML QtQuick почему не выполняется код после вызова слота?
onClicked: { // Вызываем слот калькулятора, чтобы вычесть числа calculator.sub(firstNumber.text, secondNumber.text) ...

Как сохранить фокус в TextField после перезагрузки модели в PyQt5 QML QtQuick
Rectangle { ListView { id: listView delegate: Item { id: cDelegate Item { ...

Какое событие срабатывает в ListView после перезагрузки модели в PyQt5 QML QtQuick?
ListView { id: listView model: lModel //... }

Изменение значений полей объекта через их имена
Возможно ли изменить значение НЕСТАТИЧЕСКОГО поля ОБЪЕКТА. Так, чтобы поле было получено через имя.

Изменение значений в реестре в разных папках через скрипт
Доброго дня! Подскажите пожалуйста: Если в реестре есть какое-то значение. Его надо изменить на другое. Только оно хранится в...


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

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

Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru