2017-08-16 2 views
1

Ich erstelle eine MATLAB-Anwendung in GUIDE und jetzt habe ich ein Problem. Ich muss eine Funktion aufrufen, die eine lange Zeit für die Ausführung benötigt und einen Wert zurückgibt, aber während der Ausführung der Funktion möchte ich, dass die GUI auf den zurückgegebenen Wert wartet.Wie GUI zu blockieren, während Funktion mit Ausgabe ausgeführt wird?

Ich habe versucht, mit waitfor aber auf diese Weise kann ich immer noch mit der GUI interagieren, und ich kann den zurückgegebenen Wert nicht nehmen ...

waitfor(function); 

ich an etwas denken kann, dass alle deaktiviert die GUI aktiviert es dann wieder, aber ich habe sowohl aktiviert als auch deaktiviert Objekte ...

Kennen Sie eine Lösung für dieses Problem?

+0

Wie wäre es mit der Einstellung * Visible * auf 'off'? –

+0

Ich habe es gerade getestet. Schnelle und schmutzige Lösung. Anfangs wollte ich den Player auf Interaktion beschränken, aber es ist in diesem Fall weitaus besser, ihn verschwinden zu lassen. Danke @XiangruiLi. Setzen Sie es als Antwort, damit ich es kennzeichnen kann. – AceX

Antwort

2

Eine einfache Lösung besteht darin, ein modales Dialogfeld mit einer Meldung "Bitte warten ..." kurz vor dem Ausführen der lang laufenden Funktion zu erstellen, und dann das Dialogfeld direkt nach Abschluss zu schließen. Ein modaler Dialog befindet sich vor der GUI und lässt keine Interaktionen mit dem dahinter liegenden Fenster zu.

Es ist möglich, dass der Benutzer im Dialogfeld auf die Schaltfläche "Schließen" klickt, aber Sie können dies überschreiben, indem Sie die "CloseRequestFcn" -Eigenschaft des Dialogfelds festlegen, so dass die Schließen-Schaltfläche nichts tut (leider nicht leicht) verberge den Knopf).

0

Ich mag den modalen Dialog von Sam Roberts vorgeschlagen. Es gibt kein Geheimnis und es ist benutzerfreundlich.

kann andere schmutzig und einfache Lösung sein, die GUI vollständig zu verstecken, wenn es in Ordnung ist:

set(hFig, 'Visible', 'off'); 

und setzt es nach getan ‚auf‘. Es wird empfohlen, es in catch Block auf "on" zu setzen, um das Verschwinden der GUI aufgrund eines Fehlers während der Ausführung zu vermeiden.

Verwandte Themen