Ich möchte eine Symbolleiste mit 2 Schaltflächen erstellen, wobei jede Schaltfläche ein anderes Formular öffnet.
Die Schritte, die ich befolgt habe, sind:
Erstellt ein Plugin mit dem Plugin Builder
Erstellt eine Symbolleiste mit 2 Schaltflächen, indem Sie die erforderlichen Änderungen in der Implementierungsdatei vornehmen.
Bis hier funktioniert alles einwandfrei. Wenn Sie also auf die erste Schaltfläche klicken, wird das entsprechende Formular korrekt geöffnet. Dieses Formular wurde vom Plugin-Builder erstellt.
Dann möchte ich ein zweites Formular haben, das geöffnet wird, wenn auf die zweite Schaltfläche geklickt wird. Damit:
Erstellt ein neues Formular in Qt Designer (form2.ui),
Übersetzte die UI-Datei in py-Datei (make) und importierte die Klasse aus der übersetzten py-Datei in die Implementierungsdatei, bekam eine Instanz der Klasse (self.dlg2 = Ui_form2 ())
und in der run () -Methode der Implementierungsdatei, die ich geschrieben habe:
def run2(self):
self.dlg2.show()
result = self.dlg2.exec_()
Aber dann bekomme ich eine Fehlermeldung, dass dieses neue Formular keine .show () -Methode hat. Sollte es etwas erben, um die .show () -Methode zu implementieren? Aber wie kann ich den Code des zweiten Formulars ändern, um etwas zu erben, da nicht alle Änderungen in der übersetzten py-Datei aus der UI-Datei gespeichert werden können?
quelle
initGui()
:self.add_action( icon_path, text=self.tr(u'plugin3'), callback=self.run3, parent=self.iface.mainWindow())
1 . Verwenden Sie den Plugin Builder , um ein neues Plugin zu erstellen
Die erstellten Dateien sind im folgenden Bild dargestellt
2 . Konvertieren Sie die Ressourcen - Datei ( resources.qrc ) zu Python - Datei ( resources.py ) unter Verwendung der OSGeo4W Shell
Wenn Sie danach in den Plugin-Ordner schauen , werden Sie eine neue .py-Datei bemerken , die Datei resources.py , die gerade erstellt wurde. Das Plugin kann jetzt über das QGIS-Hauptmenü> Plugins verwalten und installieren installiert und geöffnet werden.
3 . WIE ERSTELLEN SIE DIE WERKZEUGLEISTE UND DIE WERKZEUGE (Knöpfe) UND FÜGEN SIE DIE WERKZEUGE AUF DIE WERKZEUGLEISTE?
Öffnen Sie mit einem Editor die Datei my_toolbar.py und schreiben Sie im Abschnitt des initGui (self) :
Auf diese Weise wurden drei Schaltflächen / Werkzeuge erstellt.
Schreiben Sie Folgendes, damit die Schaltflächen in der Symbolleiste angezeigt werden:
Damit die Schaltflächen beim Klicken zum Öffnen einer GUI angeklickt werden, schreiben Sie Folgendes:
Die Methoden runtool1 , runtool2 und runtool3 werden später wie folgt definiert, um für jede Schaltfläche eine andere Benutzeroberfläche zu öffnen
Auf diese Weise wird beim Klicken auf die Schaltfläche tool1 die Benutzeroberfläche geöffnet. Wenn auf die Schaltfläche tool2 geklickt wird, wird die Schaltfläche dlgtool2 geöffnet, und wenn auf die Schaltfläche tool3 geklickt wird, wird die Benutzeroberfläche dlgtool3 geöffnet.
dlgtool1 , dlgtool2 und dlgtool3 sollten Variablen sein, die auf die UI-Dateien zeigen, die die Dialoge darstellen .
Die Dialoge müssen also sein:
erstellt ,
in die Haupt-py-Datei ( my_toolbar.py ) importiert und
Variablen ( dlgtool1 , dlgtool2 und dlgtool3 ) zugewiesen, um eine Instanz von ihnen zu erhalten.
So erstellen Sie die Dialoge :
Öffnen Sie Form_dlgtool1_dialog.py mit einem Editor, um die folgenden Änderungen zu übernehmen:
Von :
Wechseln zu :
Gehen Sie für die beiden anderen Dateien genauso vor ( Form_dlgtool2_dialog.py und Form_dlgtool3_dialog.py ).
Dann , um die Dialoge in die Hauptdatei zu importieren , öffnen my_toolbar.py Datei mit dem Editor und importieren Sie die folgende
Schließlich , um eine Instanz von ihnen zu erhalten , schreiben Sie die folgenden in der def __init __ (self, iface) Abschnitt:
Jetzt können Sie die UI-Dateien im QtDesigner öffnen und anpassen. Laden Sie dann die Plugin-Symbolleiste in QGIS neu, um das folgende Ergebnis zu erhalten
quelle