Referencing a table using PyQt5 on a custom form in QGIS 3 Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Couldn't destroy QGIS Custom Edit Form FactoriesHow to import PyQt5 in QGIS 2.99?Custom Form in QGISQgsRelationEditorWidget in Custom formNo custom widgets in Qt Designer for QGIS 3QGIS API 3.2 and PyQT5 in Ubuntu Fails: Native Qt signal is not callableCompiling QGIS 3.x (master) on Ubuntu 16.04 with Python3.6 and the latest Qt 5 and PyQt5 familiy modules (PyQt5, sip, qscintilla, pyqtchart)Custom Attributes form in QGIS 3QGIS QComboBox List controls form inputQGIS Compiling 3.6.0 Troubleshooting about PyQt5, SIP, Qscintilla on Ubuntu 18.04 LTS
Stopping real property loss from eroding embankment
How can you insert a "times/divide" symbol similar to the "plus/minus" (±) one?
What would be Julian Assange's expected punishment, on the current English criminal law?
Why don't the Weasley twins use magic outside of school if the Trace can only find the location of spells cast?
Is there a service that would inform me whenever a new direct route is scheduled from a given airport?
How does modal jazz use chord progressions?
Windows 10: How to Lock (not sleep) laptop on lid close?
Stop battery usage [Ubuntu 18]
Is it possible to boil a liquid by just mixing many immiscible liquids together?
Unable to start mainnet node docker container
Did the new image of black hole confirm the general theory of relativity?
Who can trigger ship-wide alerts in Star Trek?
Understanding this description of teleportation
What is the order of Mitzvot in Rambam's Sefer Hamitzvot?
Do working physicists consider Newtonian mechanics to be "falsified"?
Statistical model of ligand substitution
What are the performance impacts of 'functional' Rust?
Complexity of many constant time steps with occasional logarithmic steps
How do I automatically answer y in bash script?
How to politely respond to generic emails requesting a PhD/job in my lab? Without wasting too much time
Is above average number of years spent on PhD considered a red flag in future academia or industry positions?
Training a classifier when some of the features are unknown
Classification of bundles, Postnikov towers, obstruction theory, local coefficients
Simulating Exploding Dice
Referencing a table using PyQt5 on a custom form in QGIS 3
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Couldn't destroy QGIS Custom Edit Form FactoriesHow to import PyQt5 in QGIS 2.99?Custom Form in QGISQgsRelationEditorWidget in Custom formNo custom widgets in Qt Designer for QGIS 3QGIS API 3.2 and PyQT5 in Ubuntu Fails: Native Qt signal is not callableCompiling QGIS 3.x (master) on Ubuntu 16.04 with Python3.6 and the latest Qt 5 and PyQt5 familiy modules (PyQt5, sip, qscintilla, pyqtchart)Custom Attributes form in QGIS 3QGIS QComboBox List controls form inputQGIS Compiling 3.6.0 Troubleshooting about PyQt5, SIP, Qscintilla on Ubuntu 18.04 LTS
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I am currently trying to add logic to a custom form to key out a habitat code. This is for work using UK Habitat Classification.
It is based on a 5 level hierarchical code to produce a Primary Code. Each level filters the options for the next layer.
What I have so far (I stopped at level 3):
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
Prime = None
L1Field = None
L2LField = None
L2CField = None
L3LField = None
L3CField = None
def formOpen(dialog,layerid,featureid):
global Prime
Prime = dialog.findChild(QLineEdit,"PRIME_COD")
global L1Field
L1Field = dialog.findChild(QComboBox,"L1")
L1Field.addItems(["","Terrestrial","Freshwater","Marine"])
L1Field.currentIndexChanged.connect( L1Changed )
global L2LField
L2LField = dialog.findChild(QComboBox,"L2_LABEL")
global L2CField
L2CField = dialog.findChild(QLineEdit,"L2_CODE")
L2LField.currentIndexChanged.connect( L2Changed )
global L3LField
L3LField = dialog.findChild(QComboBox,"L3_LABEL")
global L3CField
L3CField = dialog.findChild(QLineEdit,"L3_CODE")
L3LField.currentIndexChanged.connect( L3Changed )
def L1Changed( value ):
L2LField.clear()
L3LField.clear()
if L1Field.currentText() == 'Terrestrial':
L2LField.addItems(["","Cropland","Grassland","Heathland and shrub","Sparsely vegetated land","Urban","Wetland","Woodland and forest"])
elif L1Field.currentText() == 'Freshwater':
L2LField.addItems(["Rivers and lakes"])
elif L1Field.currentText() == 'Marine':
L2LField.addItems(["Marine inlets and transitional waters"])
else:
L2LField.addItems([""])
def L2Changed( value ):
L3LField.clear()
if L2LField.currentText() == 'Grassland':
L2CField.setText( 'g' )
L3LField.addItems(["","Acid grassland","Calcareous grassland","Neutral grassland","Modified grassland"])
elif L2LField.currentText() == 'Woodland and forest':
L2CField.setText( 'w' )
L3LField.addItems(["","Broadleaved mixed and yew woodland","Coniferous woodland"])
elif L2LField.currentText() == 'Heathland and shrub':
L2CField.setText( 'h' )
L3LField.addItems(["","Dwarf shrub heath","Hedgerows","Dense scrub"])
elif L2LField.currentText() == 'Wetland':
L2CField.setText( 'f' )
L3LField.addItems(["","Bog","Fen marsh and swamp"])
elif L2LField.currentText() == 'Cropland':
L2CField.setText( 'c' )
L3LField.addItems(["Arable and horticulture"])
elif L2LField.currentText() == 'Urban':
L2CField.setText( 'u' )
L3LField.addItems(["Built-up areas and gardens"])
elif L2LField.currentText() == 'Sparsely vegetated land':
L2CField.setText( 's' )
L3LField.addItems(["","Inland rock","Supralittoral Rock","Supralittoral Sediment"])
elif L2LField.currentText() == 'Rivers and lakes':
L2CField.setText( 'r' )
L3LField.addItems(["","Standing open water and canals","Rivers and streams"])
elif L2LField.currentText() == 'Marine inlets and transitional waters':
L2CField.setText( 't' )
L3LField.addItems(["","Littoral Rock","Littoral Sediment"])
else:
L2CField.setText( '' )
def L3Changed (value):
if L3LField.currentText() == 'Acid grassland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Calcareous grassland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Neutral grassland':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Modified grassland':
L3CField.setText( '4' )
elif L3LField.currentText() == 'Broadleaved mixed and yew woodland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Coniferous woodland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dwarf shrub heath':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Hedgerows':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dense scrub':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Bog':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Fen marsh and swamp':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Arable and horticulture':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Built-up areas and gardens':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Inland rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Supralittoral Rock':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Supralittoral Sediment':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Standing open water and canals':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Rivers and streams':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Littoral Rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Littoral Sediment':
L3CField.setText( '2' )
else:
L3CField.setText( '' )
I have made a simple form in Qt Designer to test this.
My code works but I feel is cumbersome and could be greatly simplified but I lack the knowledge how. I would like to reference a table with the values to simplify things. I think it needs to be a table rather than lists as the Label field value sets the Code value and the previous level Label controls the drill down function on the Label QComboBox.
Any help or recommendations to improve would be welcome.
N.B. I have not yet written the code to populate the Primary Field but this will be a concatenation of the L0CFields triggered on index change of any of these fields, I just haven't worked out how yet...
pyqgis qgis-3 pyqt5 qcomobox
add a comment |
I am currently trying to add logic to a custom form to key out a habitat code. This is for work using UK Habitat Classification.
It is based on a 5 level hierarchical code to produce a Primary Code. Each level filters the options for the next layer.
What I have so far (I stopped at level 3):
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
Prime = None
L1Field = None
L2LField = None
L2CField = None
L3LField = None
L3CField = None
def formOpen(dialog,layerid,featureid):
global Prime
Prime = dialog.findChild(QLineEdit,"PRIME_COD")
global L1Field
L1Field = dialog.findChild(QComboBox,"L1")
L1Field.addItems(["","Terrestrial","Freshwater","Marine"])
L1Field.currentIndexChanged.connect( L1Changed )
global L2LField
L2LField = dialog.findChild(QComboBox,"L2_LABEL")
global L2CField
L2CField = dialog.findChild(QLineEdit,"L2_CODE")
L2LField.currentIndexChanged.connect( L2Changed )
global L3LField
L3LField = dialog.findChild(QComboBox,"L3_LABEL")
global L3CField
L3CField = dialog.findChild(QLineEdit,"L3_CODE")
L3LField.currentIndexChanged.connect( L3Changed )
def L1Changed( value ):
L2LField.clear()
L3LField.clear()
if L1Field.currentText() == 'Terrestrial':
L2LField.addItems(["","Cropland","Grassland","Heathland and shrub","Sparsely vegetated land","Urban","Wetland","Woodland and forest"])
elif L1Field.currentText() == 'Freshwater':
L2LField.addItems(["Rivers and lakes"])
elif L1Field.currentText() == 'Marine':
L2LField.addItems(["Marine inlets and transitional waters"])
else:
L2LField.addItems([""])
def L2Changed( value ):
L3LField.clear()
if L2LField.currentText() == 'Grassland':
L2CField.setText( 'g' )
L3LField.addItems(["","Acid grassland","Calcareous grassland","Neutral grassland","Modified grassland"])
elif L2LField.currentText() == 'Woodland and forest':
L2CField.setText( 'w' )
L3LField.addItems(["","Broadleaved mixed and yew woodland","Coniferous woodland"])
elif L2LField.currentText() == 'Heathland and shrub':
L2CField.setText( 'h' )
L3LField.addItems(["","Dwarf shrub heath","Hedgerows","Dense scrub"])
elif L2LField.currentText() == 'Wetland':
L2CField.setText( 'f' )
L3LField.addItems(["","Bog","Fen marsh and swamp"])
elif L2LField.currentText() == 'Cropland':
L2CField.setText( 'c' )
L3LField.addItems(["Arable and horticulture"])
elif L2LField.currentText() == 'Urban':
L2CField.setText( 'u' )
L3LField.addItems(["Built-up areas and gardens"])
elif L2LField.currentText() == 'Sparsely vegetated land':
L2CField.setText( 's' )
L3LField.addItems(["","Inland rock","Supralittoral Rock","Supralittoral Sediment"])
elif L2LField.currentText() == 'Rivers and lakes':
L2CField.setText( 'r' )
L3LField.addItems(["","Standing open water and canals","Rivers and streams"])
elif L2LField.currentText() == 'Marine inlets and transitional waters':
L2CField.setText( 't' )
L3LField.addItems(["","Littoral Rock","Littoral Sediment"])
else:
L2CField.setText( '' )
def L3Changed (value):
if L3LField.currentText() == 'Acid grassland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Calcareous grassland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Neutral grassland':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Modified grassland':
L3CField.setText( '4' )
elif L3LField.currentText() == 'Broadleaved mixed and yew woodland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Coniferous woodland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dwarf shrub heath':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Hedgerows':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dense scrub':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Bog':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Fen marsh and swamp':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Arable and horticulture':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Built-up areas and gardens':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Inland rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Supralittoral Rock':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Supralittoral Sediment':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Standing open water and canals':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Rivers and streams':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Littoral Rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Littoral Sediment':
L3CField.setText( '2' )
else:
L3CField.setText( '' )
I have made a simple form in Qt Designer to test this.
My code works but I feel is cumbersome and could be greatly simplified but I lack the knowledge how. I would like to reference a table with the values to simplify things. I think it needs to be a table rather than lists as the Label field value sets the Code value and the previous level Label controls the drill down function on the Label QComboBox.
Any help or recommendations to improve would be welcome.
N.B. I have not yet written the code to populate the Primary Field but this will be a concatenation of the L0CFields triggered on index change of any of these fields, I just haven't worked out how yet...
pyqgis qgis-3 pyqt5 qcomobox
What data format is the table in? Are you wanting to know how to connect and query against it?
– artwork21
Apr 10 at 12:15
It can be in any format that will work, CSV or DBF is easiest for me. I have looked at panda but not sure if it is right for this application. I need to know how to connect/reference a table so I can bring the values over to populate QComboBoxes and QTextEdit fields live based on values defined in other fields.
– P Dreyer
Apr 11 at 11:54
add a comment |
I am currently trying to add logic to a custom form to key out a habitat code. This is for work using UK Habitat Classification.
It is based on a 5 level hierarchical code to produce a Primary Code. Each level filters the options for the next layer.
What I have so far (I stopped at level 3):
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
Prime = None
L1Field = None
L2LField = None
L2CField = None
L3LField = None
L3CField = None
def formOpen(dialog,layerid,featureid):
global Prime
Prime = dialog.findChild(QLineEdit,"PRIME_COD")
global L1Field
L1Field = dialog.findChild(QComboBox,"L1")
L1Field.addItems(["","Terrestrial","Freshwater","Marine"])
L1Field.currentIndexChanged.connect( L1Changed )
global L2LField
L2LField = dialog.findChild(QComboBox,"L2_LABEL")
global L2CField
L2CField = dialog.findChild(QLineEdit,"L2_CODE")
L2LField.currentIndexChanged.connect( L2Changed )
global L3LField
L3LField = dialog.findChild(QComboBox,"L3_LABEL")
global L3CField
L3CField = dialog.findChild(QLineEdit,"L3_CODE")
L3LField.currentIndexChanged.connect( L3Changed )
def L1Changed( value ):
L2LField.clear()
L3LField.clear()
if L1Field.currentText() == 'Terrestrial':
L2LField.addItems(["","Cropland","Grassland","Heathland and shrub","Sparsely vegetated land","Urban","Wetland","Woodland and forest"])
elif L1Field.currentText() == 'Freshwater':
L2LField.addItems(["Rivers and lakes"])
elif L1Field.currentText() == 'Marine':
L2LField.addItems(["Marine inlets and transitional waters"])
else:
L2LField.addItems([""])
def L2Changed( value ):
L3LField.clear()
if L2LField.currentText() == 'Grassland':
L2CField.setText( 'g' )
L3LField.addItems(["","Acid grassland","Calcareous grassland","Neutral grassland","Modified grassland"])
elif L2LField.currentText() == 'Woodland and forest':
L2CField.setText( 'w' )
L3LField.addItems(["","Broadleaved mixed and yew woodland","Coniferous woodland"])
elif L2LField.currentText() == 'Heathland and shrub':
L2CField.setText( 'h' )
L3LField.addItems(["","Dwarf shrub heath","Hedgerows","Dense scrub"])
elif L2LField.currentText() == 'Wetland':
L2CField.setText( 'f' )
L3LField.addItems(["","Bog","Fen marsh and swamp"])
elif L2LField.currentText() == 'Cropland':
L2CField.setText( 'c' )
L3LField.addItems(["Arable and horticulture"])
elif L2LField.currentText() == 'Urban':
L2CField.setText( 'u' )
L3LField.addItems(["Built-up areas and gardens"])
elif L2LField.currentText() == 'Sparsely vegetated land':
L2CField.setText( 's' )
L3LField.addItems(["","Inland rock","Supralittoral Rock","Supralittoral Sediment"])
elif L2LField.currentText() == 'Rivers and lakes':
L2CField.setText( 'r' )
L3LField.addItems(["","Standing open water and canals","Rivers and streams"])
elif L2LField.currentText() == 'Marine inlets and transitional waters':
L2CField.setText( 't' )
L3LField.addItems(["","Littoral Rock","Littoral Sediment"])
else:
L2CField.setText( '' )
def L3Changed (value):
if L3LField.currentText() == 'Acid grassland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Calcareous grassland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Neutral grassland':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Modified grassland':
L3CField.setText( '4' )
elif L3LField.currentText() == 'Broadleaved mixed and yew woodland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Coniferous woodland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dwarf shrub heath':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Hedgerows':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dense scrub':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Bog':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Fen marsh and swamp':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Arable and horticulture':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Built-up areas and gardens':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Inland rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Supralittoral Rock':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Supralittoral Sediment':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Standing open water and canals':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Rivers and streams':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Littoral Rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Littoral Sediment':
L3CField.setText( '2' )
else:
L3CField.setText( '' )
I have made a simple form in Qt Designer to test this.
My code works but I feel is cumbersome and could be greatly simplified but I lack the knowledge how. I would like to reference a table with the values to simplify things. I think it needs to be a table rather than lists as the Label field value sets the Code value and the previous level Label controls the drill down function on the Label QComboBox.
Any help or recommendations to improve would be welcome.
N.B. I have not yet written the code to populate the Primary Field but this will be a concatenation of the L0CFields triggered on index change of any of these fields, I just haven't worked out how yet...
pyqgis qgis-3 pyqt5 qcomobox
I am currently trying to add logic to a custom form to key out a habitat code. This is for work using UK Habitat Classification.
It is based on a 5 level hierarchical code to produce a Primary Code. Each level filters the options for the next layer.
What I have so far (I stopped at level 3):
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
Prime = None
L1Field = None
L2LField = None
L2CField = None
L3LField = None
L3CField = None
def formOpen(dialog,layerid,featureid):
global Prime
Prime = dialog.findChild(QLineEdit,"PRIME_COD")
global L1Field
L1Field = dialog.findChild(QComboBox,"L1")
L1Field.addItems(["","Terrestrial","Freshwater","Marine"])
L1Field.currentIndexChanged.connect( L1Changed )
global L2LField
L2LField = dialog.findChild(QComboBox,"L2_LABEL")
global L2CField
L2CField = dialog.findChild(QLineEdit,"L2_CODE")
L2LField.currentIndexChanged.connect( L2Changed )
global L3LField
L3LField = dialog.findChild(QComboBox,"L3_LABEL")
global L3CField
L3CField = dialog.findChild(QLineEdit,"L3_CODE")
L3LField.currentIndexChanged.connect( L3Changed )
def L1Changed( value ):
L2LField.clear()
L3LField.clear()
if L1Field.currentText() == 'Terrestrial':
L2LField.addItems(["","Cropland","Grassland","Heathland and shrub","Sparsely vegetated land","Urban","Wetland","Woodland and forest"])
elif L1Field.currentText() == 'Freshwater':
L2LField.addItems(["Rivers and lakes"])
elif L1Field.currentText() == 'Marine':
L2LField.addItems(["Marine inlets and transitional waters"])
else:
L2LField.addItems([""])
def L2Changed( value ):
L3LField.clear()
if L2LField.currentText() == 'Grassland':
L2CField.setText( 'g' )
L3LField.addItems(["","Acid grassland","Calcareous grassland","Neutral grassland","Modified grassland"])
elif L2LField.currentText() == 'Woodland and forest':
L2CField.setText( 'w' )
L3LField.addItems(["","Broadleaved mixed and yew woodland","Coniferous woodland"])
elif L2LField.currentText() == 'Heathland and shrub':
L2CField.setText( 'h' )
L3LField.addItems(["","Dwarf shrub heath","Hedgerows","Dense scrub"])
elif L2LField.currentText() == 'Wetland':
L2CField.setText( 'f' )
L3LField.addItems(["","Bog","Fen marsh and swamp"])
elif L2LField.currentText() == 'Cropland':
L2CField.setText( 'c' )
L3LField.addItems(["Arable and horticulture"])
elif L2LField.currentText() == 'Urban':
L2CField.setText( 'u' )
L3LField.addItems(["Built-up areas and gardens"])
elif L2LField.currentText() == 'Sparsely vegetated land':
L2CField.setText( 's' )
L3LField.addItems(["","Inland rock","Supralittoral Rock","Supralittoral Sediment"])
elif L2LField.currentText() == 'Rivers and lakes':
L2CField.setText( 'r' )
L3LField.addItems(["","Standing open water and canals","Rivers and streams"])
elif L2LField.currentText() == 'Marine inlets and transitional waters':
L2CField.setText( 't' )
L3LField.addItems(["","Littoral Rock","Littoral Sediment"])
else:
L2CField.setText( '' )
def L3Changed (value):
if L3LField.currentText() == 'Acid grassland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Calcareous grassland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Neutral grassland':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Modified grassland':
L3CField.setText( '4' )
elif L3LField.currentText() == 'Broadleaved mixed and yew woodland':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Coniferous woodland':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dwarf shrub heath':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Hedgerows':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Dense scrub':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Bog':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Fen marsh and swamp':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Arable and horticulture':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Built-up areas and gardens':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Inland rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Supralittoral Rock':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Supralittoral Sediment':
L3CField.setText( '3' )
elif L3LField.currentText() == 'Standing open water and canals':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Rivers and streams':
L3CField.setText( '2' )
elif L3LField.currentText() == 'Littoral Rock':
L3CField.setText( '1' )
elif L3LField.currentText() == 'Littoral Sediment':
L3CField.setText( '2' )
else:
L3CField.setText( '' )
I have made a simple form in Qt Designer to test this.
My code works but I feel is cumbersome and could be greatly simplified but I lack the knowledge how. I would like to reference a table with the values to simplify things. I think it needs to be a table rather than lists as the Label field value sets the Code value and the previous level Label controls the drill down function on the Label QComboBox.
Any help or recommendations to improve would be welcome.
N.B. I have not yet written the code to populate the Primary Field but this will be a concatenation of the L0CFields triggered on index change of any of these fields, I just haven't worked out how yet...
pyqgis qgis-3 pyqt5 qcomobox
pyqgis qgis-3 pyqt5 qcomobox
asked Apr 8 at 16:09
P DreyerP Dreyer
706
706
What data format is the table in? Are you wanting to know how to connect and query against it?
– artwork21
Apr 10 at 12:15
It can be in any format that will work, CSV or DBF is easiest for me. I have looked at panda but not sure if it is right for this application. I need to know how to connect/reference a table so I can bring the values over to populate QComboBoxes and QTextEdit fields live based on values defined in other fields.
– P Dreyer
Apr 11 at 11:54
add a comment |
What data format is the table in? Are you wanting to know how to connect and query against it?
– artwork21
Apr 10 at 12:15
It can be in any format that will work, CSV or DBF is easiest for me. I have looked at panda but not sure if it is right for this application. I need to know how to connect/reference a table so I can bring the values over to populate QComboBoxes and QTextEdit fields live based on values defined in other fields.
– P Dreyer
Apr 11 at 11:54
What data format is the table in? Are you wanting to know how to connect and query against it?
– artwork21
Apr 10 at 12:15
What data format is the table in? Are you wanting to know how to connect and query against it?
– artwork21
Apr 10 at 12:15
It can be in any format that will work, CSV or DBF is easiest for me. I have looked at panda but not sure if it is right for this application. I need to know how to connect/reference a table so I can bring the values over to populate QComboBoxes and QTextEdit fields live based on values defined in other fields.
– P Dreyer
Apr 11 at 11:54
It can be in any format that will work, CSV or DBF is easiest for me. I have looked at panda but not sure if it is right for this application. I need to know how to connect/reference a table so I can bring the values over to populate QComboBoxes and QTextEdit fields live based on values defined in other fields.
– P Dreyer
Apr 11 at 11:54
add a comment |
1 Answer
1
active
oldest
votes
To connect to a .csv using pyqgis you may use this method:
table = QgsVectorLayer('C:/Temp/Book1.csv', "table", "ogr")
To cursor through the records and columns use this method:
for record in table.getFeatures():
print('L3_LABLE = , 'L3CODE = '.format(record['L3_LABLE'], record['L3_CODE']))
Thank you, I'm still not quite there with it yet but that's no doubt down to my total inexperience with scripting. I will plug away at it when I have time. Does the QgsVectorLayer address have to be absolute or can it be relative to the project file?
– P Dreyer
Apr 11 at 15:19
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318145%2freferencing-a-table-using-pyqt5-on-a-custom-form-in-qgis-3%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
To connect to a .csv using pyqgis you may use this method:
table = QgsVectorLayer('C:/Temp/Book1.csv', "table", "ogr")
To cursor through the records and columns use this method:
for record in table.getFeatures():
print('L3_LABLE = , 'L3CODE = '.format(record['L3_LABLE'], record['L3_CODE']))
Thank you, I'm still not quite there with it yet but that's no doubt down to my total inexperience with scripting. I will plug away at it when I have time. Does the QgsVectorLayer address have to be absolute or can it be relative to the project file?
– P Dreyer
Apr 11 at 15:19
add a comment |
To connect to a .csv using pyqgis you may use this method:
table = QgsVectorLayer('C:/Temp/Book1.csv', "table", "ogr")
To cursor through the records and columns use this method:
for record in table.getFeatures():
print('L3_LABLE = , 'L3CODE = '.format(record['L3_LABLE'], record['L3_CODE']))
Thank you, I'm still not quite there with it yet but that's no doubt down to my total inexperience with scripting. I will plug away at it when I have time. Does the QgsVectorLayer address have to be absolute or can it be relative to the project file?
– P Dreyer
Apr 11 at 15:19
add a comment |
To connect to a .csv using pyqgis you may use this method:
table = QgsVectorLayer('C:/Temp/Book1.csv', "table", "ogr")
To cursor through the records and columns use this method:
for record in table.getFeatures():
print('L3_LABLE = , 'L3CODE = '.format(record['L3_LABLE'], record['L3_CODE']))
To connect to a .csv using pyqgis you may use this method:
table = QgsVectorLayer('C:/Temp/Book1.csv', "table", "ogr")
To cursor through the records and columns use this method:
for record in table.getFeatures():
print('L3_LABLE = , 'L3CODE = '.format(record['L3_LABLE'], record['L3_CODE']))
answered Apr 11 at 12:21
artwork21artwork21
31.1k555120
31.1k555120
Thank you, I'm still not quite there with it yet but that's no doubt down to my total inexperience with scripting. I will plug away at it when I have time. Does the QgsVectorLayer address have to be absolute or can it be relative to the project file?
– P Dreyer
Apr 11 at 15:19
add a comment |
Thank you, I'm still not quite there with it yet but that's no doubt down to my total inexperience with scripting. I will plug away at it when I have time. Does the QgsVectorLayer address have to be absolute or can it be relative to the project file?
– P Dreyer
Apr 11 at 15:19
Thank you, I'm still not quite there with it yet but that's no doubt down to my total inexperience with scripting. I will plug away at it when I have time. Does the QgsVectorLayer address have to be absolute or can it be relative to the project file?
– P Dreyer
Apr 11 at 15:19
Thank you, I'm still not quite there with it yet but that's no doubt down to my total inexperience with scripting. I will plug away at it when I have time. Does the QgsVectorLayer address have to be absolute or can it be relative to the project file?
– P Dreyer
Apr 11 at 15:19
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f318145%2freferencing-a-table-using-pyqt5-on-a-custom-form-in-qgis-3%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
What data format is the table in? Are you wanting to know how to connect and query against it?
– artwork21
Apr 10 at 12:15
It can be in any format that will work, CSV or DBF is easiest for me. I have looked at panda but not sure if it is right for this application. I need to know how to connect/reference a table so I can bring the values over to populate QComboBoxes and QTextEdit fields live based on values defined in other fields.
– P Dreyer
Apr 11 at 11:54