18

私は MATLAB で GUI を作成しようとしてきましたが、非常に困難でした。ここで、私のプログラムの背景を少し説明します。ユーザーに画像分析プロセスを順を追って実行するウィザードを作成したいと考えています。ウィザードは、ユーザーの入力を合図し、「次へ」というラベルの付いたボタンが押されると、画像処理アクションを実行します。MATLAB ヘルプを読むと、GUI の作成には 2 つのアプローチがあると思います。 1. コード行で GUI を作成します。2.ガイドを使用します。

私は、GUIDE の学習曲線が最も浅いと考えました。最初は、プロセスは簡単でした。ボタンやテキスト ボックスをドラッグ アンド ドロップして簡単に配置できました。私の計画は、ボタンやテキストなどを含む一連のパネルを配置し、[次へ] ボタンを押すと順次表示されるようにすることでした。そして、ここで私は困惑しました。

GUIDE でパネルを保存すると、MATLAB によって .m ファイルと .fig ファイルが作成されます。.m ファイルを読んでみると、コールバック用のコードを書く余地が残っていることがわかりますが、それ以外はほとんどありません。.fig ファイルはバイナリなので、あえて編集しません。どうすればオブジェクトを制御できるのか、たとえば、パネルの可視性を設定するにはどうすればよいのでしょうか? さらに、ウィザードの各パネルを個別に作成する必要がありました。.m ファイルを手動でウィザード.m ラッパー ファイルに結合できることを望んでいましたが、これは正しいアプローチではないと思います (少なくとも私にとっては、方法がわからないため)。

GUIDE を使用する代わりに、"uicontrol" 関数を使用して GUI を作成する例を見てきました。このアプローチは、各ボタンの位置とサイズ、およびデフォルトを手動でコーディングする必要があるため、面倒に思えます。おそらくこれが最善のアプローチですが、それは私を怖がらせます。

その結果、私は MATLAB の見栄えの悪い GUI ツールに不満を感じており、このハードルを克服するための技術が欠けていることに不満を感じています。

私は MATLAB で作成された派手な gui をいくつか見てきましたが、これを自分で試みましたが、その存在に困惑しています。それらを作成した人は例外的な MATLAB ユーザーでした (私はそうではありません) か、明らかな何かが欠けていて、何か助けが必要でした。私は今、GUI が努力する価値があるかどうか疑問に思っています。Python などの他の言語に MATLAB コードを埋め込むという追加の課題があるため、QT のようなものを探求しているとは思いません。

この件について誰かアドバイスはありますか?私がどこで間違っているのか、なぜ私がこのような困難を抱えているのか、誰でも指摘できますか?

4

6 に答える 6

20

.fig ファイルはバイナリなので、あえて編集しません。

FIG ファイルは、GUIDE で設定したプロパティを持つ GUI 要素のリストを含む MAT ファイルです。

パネルの可視性を設定するには?

handles.mytag要素にタグを割り当てます。次のように使用してアクセスできますset(handles.mypanel, 'visible', 'off')

さらに、ウィザードの各パネルを個別に作成する必要がありました。.m ファイルを手動でウィザード.m ラッパー ファイルに結合できることを望んでいましたが、これは正しいアプローチではないと思います (少なくとも私にとっては、方法がわからないため)。

これらの自動生成された m ファイルを 1 つに結合することはできません。ウィザード ページごとに .fig および .m ファイルを保持してください。

GUIDE を使用する代わりに、"uicontrol" 関数を使用して GUI を作成する例を見てきました。このアプローチは、各ボタンの位置とサイズ、およびデフォルトを手動でコーディングする必要があるため、面倒に思えます。おそらくこれが最善のアプローチですが、それは私を怖がらせます。

uicontrol要素を手動で配置せず、レイアウト マネージャーを使用する場合は、直接使用しても問題ありません。ここここ でいくつか見ることができます。GUI を適切にサイズ変更できるようにしたい場合は、レイアウト マネージャーが唯一の方法です。

この件について誰かアドバイスはありますか?私がどこで間違っているのか、なぜ私がこのような困難を抱えているのか、誰でも指摘できますか?

プロの GUI プログラミングは簡単ではありません。IMO は最も難しい部分ですらあります。

MATLAB GUI の他に、私は Java Swing と .NET WPF の両方をよく使用しました。IMO MATLAB GUI ははるかに簡単です。10% の (学習) 労力で 90% を実行できます。もちろん、それに慣れるにはまだ時間が必要です。

その結果、私は MATLAB の見栄えの悪い GUI ツールに不満を感じており、このハードルを克服するための技術が欠けていることに不満を感じています。

はい、GUIDE は最適なソリューションではありませんが、GUI をすばやく作成するための最良の手法である可能性があります。

私は MATLAB で作成された派手な gui をいくつか見てきましたが、これを自分で試みましたが、その存在に困惑しています。

これらの GUI は、MATLAB GUI の特定の詳細を利用するハックです。たとえば、視覚的なセパレーターが白い uicontrol 上の長い '__________' 黒いテキストであり、高さは 2 ピクセルしかないか、html を使用してツールチップの色が異なります。

結局、MATLAB GUI で Java Swing を使用できます (実際には Swing から派生しているため)。

私は今、GUI が努力する価値があるかどうか疑問に思っています。

はい、あなたの場合、機能だけを非常にシンプルにしてください。派手なことは考えないでください。

于 2011-10-09T06:43:50.677 に答える
6

GUIDE は、2015 年 6 月現在、あなたが思っているよりも悪いものです。GUI を構成するには非常に非効率的で、非常にバグが多いです。間違いなくプロ級ではありません。ガイド、どうしてあなたを軽蔑することができますか?方法を列挙しましょう:

1) GUI 作成中の入力エラーにはフラグが立てられません。この未発表のエラーが潜んでいると、何時間も作業できます。[保存] をクリックすると、GUIDE は作業を保存しません。したがって、GUIDE は、ユーザーの作業やデータを失わないという、あらゆるソフトウェア パッケージの主要な指示に違反しています。Mathworks が実際にこれほど悪いものをリリースしたとは信じられません。

2) ギャング コピーはあいまいです。朝食の効果を計算するプログラムがあるとします。編集可能なボックスとして、時間、分、炭水化物の量があります。静的テキストとしてラベルがあります。ランチとディナーで同じものを食べたい。すべて選択。Ctrl+C。カーソルを別の場所に置き、Ctrl-V を押します。何も起こりません。いやいや、30秒くらいでペーストが出てきます。しかし、もしあなたがすでに何か他のことをしているなら、まあ... 一体何が起こったのかを考えてみてください.

3) ギャングの動きでさえ、怪しい/奇妙/超自然的/所有物です。ランチの行を上下に移動したいとしますか? ハイライト。矢印キーを使用して移動します。成功!ちょっと待って!約 5 秒後、テキストと編集ボックスが元の位置に戻り始めます。介入なしで!憑依です!

GUIDE を使用してかなり複雑な GUI を作成しました。本来あるべきよりも、またはそうなる可能性があるよりも、はるかに多くの心痛と面倒。JAVA/Python/Julia を実行するフリーウェアの代替品があれば、GUI を必要とする別の MATLAB プロジェクトを開始することはありません。生地を保存してください!

于 2015-06-06T19:54:50.860 に答える
4

個人的には、すばやく簡単な GUI を作成したり、GUI の作成方法を学習したりするには、GUIDE は十分に優れていると思いますが、今では一般的にプログラムで GUI を作成することを好みます。これにより、コンテンツをより適切に制御できます。私にとって重要なのは、UI 要素の UserData プロパティを使用して、更新する UI オブジェクトへのハンドルを含む有用なデータを格納することです。

しかし、何か賢いものが必要な場合は、Java または .NET ベースのものに頼る必要があります。

また、MATLAB の得意分野を覚えておくことも重要であり、GUI は得意ではありません。GUI の作成が優れているプログラミング言語を使用する場合は、配列や行列データの操作のしやすさなど、他の点で妥協する必要があります。

編集: @Mikhail によってリンクされたGUI レイアウト ツールボックスは非常に便利に見えます。

于 2011-10-09T16:57:51.773 に答える
3

プログラムで作成されたGUIとは対照的に、GUIDEで生成されたGUIの主な問題は、ファイルがテキストではないという事実です。したがって、バージョン管理を使用することはできません。回避策があります-export関数を使用して.mファイルのみを作成できます。もちろん、元に戻しfigて視覚的に編集することはできません。
個人的には、私は常にGUIDEなしでGUIを書くことを好みます。

于 2012-01-29T23:36:19.243 に答える
3

私はMATLABでGUIをプログラミングしています。

私が見てきたことから、GUIDE はプログラミング GUI を非常に便利にします。あなたが言ったように、実際にはボタンなどのプログラミングを気にする必要はなく、ボタンを配置してmファイルを埋めるだけです。ボタン内では、プロパティ 'Visible' を 'on' または 'off' に設定することで可視性を処理できます。

GUI を手動で作成する方法と、GUIDE を使用して作成する方法の両方を試しました。入っていくしかないという印象でした。ハンドルの概念を理解したら (これが matlab guis の主な機能です)、理解できました。

最初に簡単な GUI をプログラムしてみてください。プロジェクトから始めないでください。ハンドルとインスペクターが MATLAB でどのように機能するか、および値のプロパティを設定する方法を把握します。GUI 内のどこにデータを保存できるか、および他のウィンドウでデータを取得する方法を理解してください (ウィンドウ間でハンドルを渡します)。

私はそれについてだと思います!MATLAB で gui をプログラミングするのは、最初は難しいかもしれませんが、上記のことを理解しておけば、とても簡単です。

于 2011-10-09T01:57:49.377 に答える
0

この会話に遅れてきましたが、0.02 ドルを追加したかったのです。あなたが言ったように、GUI デザインは MatLab の得意分野ではありません。ただし、それを使用して多くのことができます。具体的な質問があれば、喜んでお答えします。また、Java スイング ライブラリに基づいて構築されているため、これらの機能を実際に利用できます。ただし、これらの機能は文書化されていません。Undocumented Secrets of MatLab という本のタイトルがあり、基礎となるスイング コンポーネントのかなりまともな議論を提供します。

MatLab GUI にはクセがありますが、それらを乗り越えることができれば、楽しむことができます。また、前述のように、より難しいハードルの 1 つはハンドルの概念です。その概念を理解すれば、90% 達成できます。

于 2014-05-21T00:22:23.317 に答える