Matlab GUI-Dateien in einem Paket?

9

Ich versuche einige .fig und ihre entsprechenden .m Dateien im Paket zu speichern.

Ich habe:

%Vor%

Aber wenn ich mainWindow.fig ausführen möchte, druckt Matlab einen Fehler von GUIDE:

%Vor%

Das lustige ist, wenn ich mit seinem voll qualifizierten Namen rufe:

%Vor%

Das Fenster erscheint normal (aber alle Callbacks funktionieren nicht).

Ich habe versucht, import ui.* vor dem Ausführen zu verwenden.

Bitte beachten Sie, dass ich dies als eine Art namespace machen möchte. Ich möchte meine gesamte Anwendung nicht im globalen Umfang von Matlab haben.

    
dynamic 11.12.2012, 17:00
quelle

1 Antwort

5

Erläuterung

Das grundlegende Problem ist, dass MATLAB GUIDE Pakete nicht kennt. Normalerweise werden die Callback-Namen automatisch verwaltet und die Dateien .m und .fig werden synchronisiert, und alle sind zufrieden. Wenn sich die Figur in einem Paket befindet, werden die Callbacks in den .fig -Eigenschaften nicht korrekt aktualisiert. Diese verweisen immer noch auf den nicht qualifizierten Namen mainWindow und nicht auf das korrekte ui.mainWindow . Anschließend schlagen alle Rückrufe fehl.

Problemumgehungen

Zwei Möglichkeiten, um diesen zu erreichen:

  • Exportieren Sie Ihre Figur: Guide -> File -> Export . Legen Sie diese Datei in Ihren + ui Ordner. Öffnen Sie die Datei und führen Sie einen find-replace durch Ersetzen aller Instanzen von @ (hObject, eventdata) mainWindow durch @ (hObject, eventdata) ui.mainWindow .

  • Alternativ können Sie die Referenzen manuell direkt in GUIDE selbst aktualisieren, ohne zu exportieren. Bearbeiten Sie für jede Schaltfläche und jedes Element, Right Click -> Property Inspector , das Feld 'Callback' und ersetzen Sie mainWindow durch ui.mainWindow .

Persönlich bevorzuge ich die erste Lösung, da Sie alle Vorkommen durch einen einzigen find-replace Befehl ersetzen können.

    
chriswynnyk 15.12.2012, 02:28
quelle

Tags und Links