XML Datei in QML anzeigen

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
helloBavaria
User
Beiträge: 15
Registriert: Donnerstag 17. Februar 2022, 11:32

Hallo Zusammen,

ich möchte gerne eine XML-Datei über Python einlesen und in QML anzeigen und bearbeiten können.

Die XML-Datei schaut im groben so aus:

Code: Alles auswählen

<ressource>
	<menu id="Root">
		<item id = "Obs">
			<subMenu>obst</subMenu>
			....
		</item>
	</menu>
	<menu id="Obst">
		<item id = "Banane">
			<farbe>"Gelb</farbe
			<subMenu>Banane</subMenu>
			....
		</item>
	</menu>
	<menu id="Banane">
		<item id = "Kalorien">
			....
		</item>
	</menu>
Optisch sollten erst alle Elemente von Root angezeigt werden. Klickt man auf Obst, sollte sich das Menü "Obst" öffnen, Klickt man auf "Banane" das Menü von Banane usw., Stichwort "Baumstruktur".
Mir ist bisher gelungen die XML Datei in Python mittels xml.etree.ElementTree einzulesen und in QML in einer Treeview darzustellen. Ziel wäre, später die properties der einzelnen Elemente ändern zu können, die Elemente per Drag & Drop neu anordnen zu können und neue Elemente hinzufügen zu können sowie nicht mehr benötigte löschen zu können.

Wie gesagt, die Elemente unter Root kann ich mir anzeigen lassen, aber ich kann die submenus nicht öffnen. Daher bin ich mir nicht mehr sicher, ob das Konzept so stimmig ist.

Ist der Treeview hier vielleicht der falsche Ansatz? Wie sollte man sowas von der Architektur her aufbauen?
Benutzeravatar
__blackjack__
User
Beiträge: 14377
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@helloBavaria: Das ist alles ein bisschen abstrakt und schwammig um da konkret etwas sagen zu können. Und QML ist ja auch eher JavaScript und nicht Python‽
Who is General Failure and why is he reading my hard disk?
Benutzeravatar
snafu
User
Beiträge: 6963
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Soll das am Ende so etwas ähnliches werden wie Regedit unter Windows, nur eben mit XML statt Registry-Einträgen?
helloBavaria
User
Beiträge: 15
Registriert: Donnerstag 17. Februar 2022, 11:32

@__blackjack__ Direkt in QML kann JavaScript verwendet werden. Ich möchte das auch machen. Für das komplette Backend wäre aber Javascript nicht ausreichend, daher möchte ich hier Python verwenden. Die Verbindung zwischen QML und Python funktioniert mittels PySide6.

@snafu: Ja ich würde sagen das geht in die richtige Richtung, so ungefähr hätte ich mir das vorgestellt
Benutzeravatar
noisefloor
User
Beiträge: 4316
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Auf deutsch: du brauchst einen XML-Editor für Qt. Gibt's doch einige... Keine Ahnung, welche davon aktuell noch weiter entwickelt werden Mit dem Suchbegriff "qt xml editor" kriegst du bei Google eine ganze Reihe brauchbarer Suchtreffer.

Gruß, noisefloor
Benutzeravatar
snafu
User
Beiträge: 6963
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Hier ein paar Screenshots von QXmlEdit:
https://qxmledit.org/gallery.html

Vielleicht ist da schon was Passendes dabei.
Benutzeravatar
__blackjack__
User
Beiträge: 14377
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich denke es ging eher darum die Fähigkeit in einem eigenen Programm zu haben, als einen zusätzlichen, externen Editor.
Who is General Failure and why is he reading my hard disk?
helloBavaria
User
Beiträge: 15
Registriert: Donnerstag 17. Februar 2022, 11:32

__blackjack__ hat geschrieben: Mittwoch 15. April 2026, 09:27 Ich denke es ging eher darum die Fähigkeit in einem eigenen Programm zu haben, als einen zusätzlichen, externen Editor.
Genau das ist der Punkt.

Es gibt auch ein paar QT-Codebeispiele für XML-Editoren, soweit ich gefunden habe verwendet die aber alle C++ als Backend und leider nicht Python.
Benutzeravatar
snafu
User
Beiträge: 6963
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Mir ging es um den Quelltext zum verlinkten Qt basierten Programm. Wobei ich vorher nicht nachgesehen habe, wie der Code aufgebaut ist.

Qt in C++ lässt sich relativ einfach in Python übertragen. Die Klassen und Methoden heißen ja genau so. Wahrscheinlich können mittlerweile sogar KIs den Grundstein dazu liefern. Bisschen mitdenken und anpassen müssen wird man das Ergebnis sicherlich trotzdem noch.
Antworten