[FOSSGIS-Talk] QGIS 3, Attributformular mit Qt Designer

Peter K. webentry at web.de
Do Mai 6 09:10:16 CEST 2021


Hallo Stefan,
 
den Block kannte ich zwar, aber trotzdem war Dein Hinweis auf diesen Beitrag erst einmal hilfreich. 
Der entscheidende Punkt ist bei dem Menüpunkt 'Funktionsname' im Menüfenster 'Python-Initialisierungskode-Konfiguration'.
Da muss laut dem Block der Python Dateiname und der Name der in dieser vorhandenen Funktion eingetragen werden.
So weit so gut, nur,es kommen hier bei mir trotzdem diverse Fehlermeldungen.
 
Unteranderem diese:
Ein Fehler trat bei der Ausführung von Python-Code auf:
SystemError: PyEval_EvalFrameEx returned a result with an error set
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'fnpflaechenmaskeopen' is not defined

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:/Users/Cyliax/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\qad\qad.py", line 1434, in layerModified
    self.undoStack.clear()
SystemError: PyEval_EvalFrameEx returned a result with an error set

Python-Version: 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]
QGIS-Version: 3.16.6-Hannover Hannover, bfd36fddc9
Vorher gab es eine ähnliche Meldung, aber zur Erweiterung 'Discovery', diese habe ich dann deinstaliert. Aber nun kommt diese
Meldung zur Erweiterung 'QAD'.
 
Meine Einrichtung:

QGIS 3.16.6 als Eigenständige Installation
der Layer kommt aus einer ORACLE-DB
die UI Datei heißt jetzt fnpflaechenmaske.ui
die Python Datei heißt fnpflaechenmaske.py
die Funktion heißt fnpflaechenmaskeopen
ich habe wie im Block von Nathan im Feld 'Funktionsname' dies eingetragen: fnpflaechenmaske.fnpflaechenmaskeopen 
schon wenn ich dann auf 'OK' klicke, kommt das erste mal eine Fehlermeldung. 

Neu ist jetzt noch diese Meldung, die nach der Pythonfehlermeldung kommt:

"Die Python-Init-Funktion (fnpflaechenmaske) wurde nicht gefunden!
Bitte den Funktionsnamen im Reiter Felder der Layereigenschaften überprüfen."  

Habe nun auch die Erweiterung 'QAD' deinstalliert, weil auch immer eine Python Fehlermeldung mit dieser kam.

ABER, es funktioniert NICHT. Entweder hat die QGIS Version 3.16 diverse Fehler, siehe auch mein Problem mit dem DXF-Export,
oder die Installation ist hier nicht sauber gelaufen.
Ich werde es noch mal auf dem Privat PC mit Version 3.18 versuchen, aber hier ist nichts zu machen.

Gruß Peter 

 
 
 

Gesendet: Mittwoch, 05. Mai 2021 um 21:45 Uhr
Von: "Stefan Giese (WhereGroup)" <stefan.giese at wheregroup.com>
An: "Peter K." <webentry at web.de>
Cc: fossgis-talk-liste at fossgis.de
Betreff: Re: [FOSSGIS-Talk] QGIS 3, Attributformular mit Qt Designer
Hallo Peter,
die beste Doku kommt immer noch von Nathan: https://woostuff.wordpress.com/2011/09/05/qgis-tips-custom-feature-forms-with-python-logic/
ich verwende das recht häufig und eigentlich bislang ohne Probleme. Die Fehler sind ohne das Projekt, die QGIS Version und den Dialog zu sehen, etwas schwierig zu klären.
Viele Grüße
Stefan

Am 05.05.2021 um 12:37 schrieb Peter K.:

Hallo Stefan,
 
habe jetzt eine Fehlermeldung weniger, aber für diese habe ich jetzt keine Idee mehr:
 
Fehler bei der Ausführung folgenden Codes:
# -*- coding: utf-8 -*-
"""
QGIS forms can have a Python function that is called when the form is
opened.

Use this function to add extra logic to your forms.

Enter the name of the function in the "Python Init function"
field.
An example follows:
"""
from qgis.PyQt.QtWidgets import QWidget

def my_form_open(dialog, layer, feature):
geom = feature.geometry()
control = dialog.findChild(QWidget,QComboBox)
control.setStyleSheet("FL_CODE"
                        "{"
                        "background : lightblue;"
                        "}")
 
Traceback (most recent call last):
  File "", line 16, in
NameError: name 'dialog' is not defined

Python-Version:
3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]

 
habe (QWidget, QComboBox) und .setStyleSheet("FL_CODE" , die Werte auch getauscht und mit und ohne Anführungsstriche,
aber ohne Erfolg.
 
Gruß Peter 
 
 

Gesendet: Mittwoch, 05. Mai 2021 um 11:07 Uhr
Von: "Stefan Giese (WhereGroup)" <stefan.giese at wheregroup.com>[mailto:stefan.giese at wheregroup.com]
An: fossgis-talk-liste at fossgis.de[mailto:fossgis-talk-liste at fossgis.de]
Cc: webentry at web.de[mailto:webentry at web.de]
Betreff: Re: [FOSSGIS-Talk] QGIS 3, Attributformular mit Qt Designer
Hallo Peter,
Du kannst dem qt Dialog in QGIS dann noch eine python-Init-Funktion mitgeben, mit der kannst Du alles wunderbar steuern, also z.B. der Background eines LineEdit Elementes:
from qgis.PyQt.QtWidgets import QWidget

def my_form_open(dialog, layer, feature):
    geom = feature.geometry()
    control = dialog.findChild(QWidget, "LineEdit1")
    control.setStyleSheet("QLineEdit"
                        "{"
                        "background : lightblue;"
                        "}")
Viele Grüße
Stefan
 

Am 05.05.2021 um 10:35 schrieb Peter K.:
Hallo an alle,

heute mal eine Frage zum Qt Designer, vielleicht hat ja der eine oder andere schon mal Erfahrungen
gesammelt.
Ich habe eine UI-Datei mit dem Qt Designer erstellt, was so weit in QGIS funktioniert.
Nun wollte ich die Darstellung etwas hübscher machen, speziell die Darstellung von
'QLineEdit' Feldern. Im Qt Designer werden Änderungen auch dargestellt, nur in QGIS nicht.
Die entsprechenden Werte werden ja über 'styleSheet' eingegeben, dort habe ich fast alle mal
durchprobiert. Aber egal was man eingibt, in QGIS ändert sich die Anzeige/Farbe nicht.

Funktionieren diese Anpassungen generell nicht in QGIS, oder muss das 'extern' gelöst werden.


Funktioniert hat das ändern der 'QLabel' Farben und ich konnte auch die Hintergrundfarbe
von 'QTabWidget' anpassen, alles über 'styleSheet'.

Gruß Peter




--
Mit freundlichen Grüßen
Stefan Giese
Projektleiter/Consultant
----------------------------------------------------
Aufwind durch Wissen!
Web-Seminare und Online-Schulungen
bei der www.foss-academy.com[http://www.foss-academy.com]
----------------------------------------------------
WhereGroup GmbH
Schwimmbadstr. 2
79100 Freiburg
Germany

Fon: +49 (0)761 / 519 102 - 61
Fax: +49 (0)761 / 519 102 - 11
stefan.giese at wheregroup.com[mailto:stefan.giese at wheregroup.com]www.wheregroup.com[http://www.wheregroup.com]
Geschäftsführer:
Olaf Knopp, Peter Stamm
Amtsgericht Bonn, HRB 9885
-- 
Mit freundlichen Grüßen
Stefan Giese
Projektleiter/Consultant
------------------------------------------------------
Aufwind durch Wissen!
Jetzt neu: Webinare und Online-Schulungen
bei der www.foss-academy.com[http://www.foss-academy.com]
------------------------------------------------------

WhereGroup GmbH
Schwimmbadstr. 2
79100 Freiburg
Germany

Fon: +49 (0)761 / 519 102 - 61
Fax: +49 (0)761 / 519 102 - 11
stefan.giese at wheregroup.com[mailto:stefan.giese at wheregroup.com]www.wheregroup.com[http://www.wheregroup.com]
Geschäftsführer:
Olaf Knopp, Peter Stamm 
Amtsgericht Bonn, HRB 9885



Mehr Informationen über die Mailingliste FOSSGIS-Talk-Liste