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:
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.
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.
Tags und Links user-interface matlab figure