Important

Traducerea este un efort al comunității, la care puteți să vă alăturați. În prezent, această pagină este tradusă 57.14%.

12. Citirea și stocarea setărilor

Sugestie

Fragmentele de cod de pe această pagină necesită următoarele importuri, dacă vă aflați în afara consolei pyqgis:

1from qgis.core import (
2  QgsProject,
3  QgsSettings,
4  QgsVectorLayer
5)

De multe ori, pentru un plugin, este utilă salvarea unor variabile, astfel încât utilizatorul să nu trebuiască să le reintroducă sau să le reselecteze, la fiecare rulare a plugin-ului.

Aceste variabile pot fi salvate cu ajutorul Qt și QGIS API. Pentru fiecare variabilă ar trebui să alegeți o cheie care va fi folosită pentru a accesa variabila — pentru culoarea preferată a utilizatorului ați putea folosi o cheie de genul „culoare_favorită” sau orice alt șir semnificativ. Este recomandabil să folosiți o oarecare logică în denumirea cheilor.

We can differentiate between several types of settings:

  • setări globale — se referă la utilizatorul unei anumite mașini. QGIS stochează o mulțime de setări globale, cum ar fi dimensiunea ferestrei principale sau toleranța implicită de acroșare. Setările sunt gestionate folosind clasa QgsSettings, de exemplu prin intermediul metodei setValue() și value() .

    Here you can see an example of how these methods are used.

     1def store():
     2  s = QgsSettings()
     3  s.setValue("myplugin/mytext", "hello world")
     4  s.setValue("myplugin/myint",  10)
     5  s.setValue("myplugin/myreal", 3.14)
     6
     7def read():
     8  s = QgsSettings()
     9  mytext = s.value("myplugin/mytext", "default text")
    10  myint  = s.value("myplugin/myint", 123)
    11  myreal = s.value("myplugin/myreal", 2.71)
    12  nonexistent = s.value("myplugin/nonexistent", None)
    13  print(mytext)
    14  print(myint)
    15  print(myreal)
    16  print(nonexistent)
    

    The second parameter of the value() method is optional and specifies the default value that is returned if there is no previous value set for the passed setting name.

    For a method to pre-configure the default values of the global settings through the qgis_global_settings.ini file, see Deploying QGIS within an organization for further details.

  • setările proiectului — variază între diferite proiecte și, prin urmare, ele sunt conectate cu un fișier de proiect. Culoarea de fundal a suportului hărții sau sistemul de referință și coordonate (CRS), de exemplu — fundal alb și WGS84 ar putea fi potrivite pentru un anumit proiect, în timp ce fondul galben și proiecția UTM ar putea fi mai bune pentru altul.

    An example of usage follows.

     1proj = QgsProject.instance()
     2
     3# store values
     4proj.writeEntry("myplugin", "mytext", "hello world")
     5proj.writeEntry("myplugin", "myint", 10)
     6proj.writeEntryDouble("myplugin", "mydouble", 0.01)
     7proj.writeEntryBool("myplugin", "mybool", True)
     8
     9# read values (returns a tuple with the value, and a status boolean
    10# which communicates whether the value retrieved could be converted to
    11# its type, in these cases a string, an integer, a double and a boolean
    12# respectively)
    13
    14mytext, type_conversion_ok = proj.readEntry("myplugin",
    15                                            "mytext",
    16                                            "default text")
    17myint, type_conversion_ok = proj.readNumEntry("myplugin",
    18                                              "myint",
    19                                              123)
    20mydouble, type_conversion_ok = proj.readDoubleEntry("myplugin",
    21                                                    "mydouble",
    22                                                    123)
    23mybool, type_conversion_ok = proj.readBoolEntry("myplugin",
    24                                                "mybool",
    25                                                123)
    

    As you can see, the writeEntry() method is used for many data types (integer, string, list), but several methods exist for reading the setting value back, and the corresponding one has to be selected for each data type.

  • setările stratului de hartă — aceste setări sunt legate de o anumită instanță a unui strat de hartă dintr-un proiect. Ele nu sunt conectate la sursa de date subiacentă a unui strat, așa că dacă creați două instanțe ale unui strat a cărui sursă de date este un fișier shape, acestea nu vor partaja setările. Setările sunt stocate în fișierul proiectului, deci, dacă utilizatorul redeschide proiectul, setările legate de strat se vor regăsi acolo. Valoarea pentru o anumită setare este preluată folosind metoda customProperty() și se poate configura utilizând setCustomProperty() .

    1vlayer = QgsVectorLayer()
    2# save a value
    3vlayer.setCustomProperty("mytext", "hello world")
    4
    5# read the value again (returning "default text" if not found)
    6mytext = vlayer.customProperty("mytext", "default text")