Gtkdialog - Linux でシェル スクリプトを使用してグラフィカル (GTK+) インターフェイスとダイアログ ボックスを作成する
Gtkdialog (または gtkdialog) は、Linux シェル スクリプトの助けを借りて GTK ライブラリを使用し、さらに XML のような構文を使用して、GTK+ インターフェイスとダイアログ ボックスを作成および構築するためのオープン ソースの気の利いたユーティリティです。 gtkdialog を使用してインターフェイスを簡単に作成できます。これは Zenity と呼ばれる最も有名なツールによく似ていますが、vbox、hbox、ボタン、フレーム、テキスト、メニューなどの多くのウィジェットを簡単に作成できる便利なカスタマイズ可能な機能がいくつか付属しています。
こちらもお読みください : Zenity を使用して GTK+ グラフィカル ダイアログ ボックスを作成する
Linux での Gtkdialog のインストール
gtkdialog-0.8.3 (最新バージョン) をダウンロードするか、wget コマンドを使用して、ダウンロードしたファイルを解凍し、次のコマンドを実行してソースからコンパイルすることもできます。
$ sudo apt-get install build-essential [on Debian based systems]
# yum install gcc make gcc-c++ [on RedHat based systems]
$ wget https://gtkdialog.googlecode.com/files/gtkdialog-0.8.3.tar.gz
tar -xvf gtkdialog-0.8.3.tar.gz
cd gtkdialog-0.8.3/
./configure
make
sudo make install
それでは、いくつかのボックスの作成を開始しましょう。ホーム フォルダーに新しい「myprogram 」スクリプトを作成します。
初めてのプログラム
$ cd
touch myprogram
次に、任意のテキスト エディタを使用して「myprogram 」ファイルを開き、次のコードを追加します。
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My First Program" icon-name="gtk-about" resizable="true" width-request="300" height-request="310">
<vbox>
<hbox space-fill="true" space-expand="true">
<button>
<label>Welcome to TecMint.com Home!</label>
<action>echo "Welcome to TecMint.com Home!"</action>
</button>
</hbox>
</vbox>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
------------
ファイルを保存し、実行権限を設定して、次のように実行します。
$ chmod 755 myprogram
./myprogram
これは、gtkdialog を使用して最初のプログラムを作成し、実行する方法です。
それでは、コードを簡単に説明します。
- #!/bin/bash: シェル スクリプトの最初の行。bash シェル パスを指定するために使用されます。
- GTKDIALOG=gtkdialog: ここでは、後で gtkdialog を使用してシェル スクリプトを実行するときに使用する変数を定義しました。この行は、gtkdialog を使用して作成するすべてのスクリプトに含まれている必要があります。
- export MAIN_DIALOG=: インターフェイスのすべての構文を含む定義した別の変数。MAIN_DIALOG を任意の名前に置き換えることができますが、スクリプトの最後の 4 行でも置き換える必要があります。
- ウィンドウ タイトル: このコードを説明する必要はないと思います。タイトル、ウィンドウのデフォルト アイコンを作成し、サイズ変更可能かどうかを選択し、幅とサイズを定義しました。必要な高さですが、もちろん、これらのオプションはすべて二次的なものであり、必要に応じて
タグを使用することもできます。 : vbox タグを使用して垂直ボックスを作成します。hbox やボタンなどの他のタグを含めるために vbox タグを作成することが重要です。 : ここでは、 タグを使用して水平ボックスを作成しました。「space-fill」と「space-expand」は、ウィンドウを通して hbox を拡張するためのオプションです。 - <ボタン>: 新しいボタンを作成します。
- : これはボタンのデフォルトのテキストです。 を使用して label タグを閉じました。もちろん、使用するすべてのタグを閉じることが非常に重要です。
- <アクション>: ボタンをクリックすると何が起こります。必要に応じてシェル コマンドを実行したり、他のファイルを実行したりできます。他にも多くのアクションやシグナルがあります。 を使用して閉じることを忘れないでください。
- : button タグを閉じます。
- : hbox タグを閉じます。
- : window タグを閉じます。
最後の 4 行は、gtkdialog を使用して作成するすべてのシェル スクリプトにも含まれている必要があります。これらは、gtkdialog コマンドに -center オプションを指定して MAIN_DIALOG 変数を実行し、ウィンドウを中央に配置します。これは実際に非常に便利です。
私の2番目のプログラム
同様に、別のファイルを作成して「2 番目のプログラム」という名前を付け、次の内容全体をそれに追加します。
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150">
<vbox>
<hbox space-fill="true">
<combobox>
<variable>myitem</variable>
<item>First One</item>
<item>Second One</item>
<item>Third One</item>
</combobox>
</hbox>
<hbox>
<button>
<label>Click Me</label>
<action>echo "You choosed $myitem"</action>
</button>
</hbox>
<hseparator width-request="240"></hseparator>
<hbox>
<button ok></button>
</hbox>
</vbox>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
ファイルを保存し、実行権限を設定して、次のように実行します。
$ chmod 755 secondprogram
./secondprogram
それでは、コードを簡単に説明します。
を使用してコンボボックス ウィジェットを作成します。 タグは、選択した項目が保存される変数のデフォルト名です。この変数を使用して、後で echo を使用して選択した項目を出力します。 は水平区切り文字であり、width-request オプションを使用してデフォルトの幅を設定できます。 - は、クリックするとウィンドウを閉じる OK ボタンです。これは非常に便利なので、そのためにカスタム ボタンを作成する必要はありません。
私の 3 番目のプログラム
「 thirdprogram 」という名前の別のファイルを作成し、そこにコード全体を追加します。
#!/bin/bash
GTKDIALOG=gtkdialog
export MAIN_DIALOG='
<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150">
<notebook tab-label="First | Second|">
<vbox>
<hbox space-fill="true">
<combobox>
<variable>myitem</variable>
<item>First One</item>
<item>Second One</item>
<item>Third One</item>
</combobox>
</hbox>
<hbox>
<button>
<label>Click Me</label>
<action>echo "You choosed $myitem"</action>
</button>
</hbox>
<hseparator width-request="240"></hseparator>
<hbox>
<button ok></button>
</hbox>
</vbox>
<vbox>
<hbox space-fill="true">
<text>
<label>Spinbutton </label>
</text>
</hbox>
<hbox space-fill="true" space-expand="true">
<spinbutton range-min="0" range-max="100" range-value="4">
<variable>myscale</variable>
<action>echo $myscale</action>
</spinbutton>
</hbox>
<hbox>
<button ok></button>
</hbox>
</vbox>
</notebook>
</window>
'
case $1 in
-d | --dump) echo "$MAIN_DIALOG" ;;
*) $GTKDIALOG --program=MAIN_DIALOG --center ;;
esac
ファイルを保存し、実行権限を付与して、図のように起動します。
$ chmod 755 thirdprogram
./thirdprogram
ここからはコードをさらに詳しく解説していきます。
を使用して 2 つのノートブック タブを作成しました。tab-label オプションでタブを作成できます。gtkdialog は入力したラベルに応じてタブを作成します。すべての はタブとして定義されているため、最初のタブは最初の 、2 番目のタブは 2 番目の から始まります。 はテキスト ウィジェットです。 タグは新しいスピン ボタンを作成します。range-min オプションはスピン ボタンの最小値、range-max はスピン ボタンの最大値、range-value はスピンのデフォルト値です。ボタン。 に変数「myscale」を与えました。 - echo と $myscale 変数を使用して選択した値を出力しました。ここでのアクションのデフォルトのシグナルは「value-changed」であり、これがこれを行うのに役立ちました。
これは単なるウィンドウの例であり、必要に応じて gtkdialog を使用してより複雑なインターフェイスを作成できます。以下のリンクから gtkdialog Web サイトの公式ドキュメントを参照して、すべての gtkdialog タグを表示できます。
Gtkdialog ドキュメント
これまでに gtkdialog を使用してシェル スクリプトの GUI を作成したことがありますか?それとも、インターフェイスを作成するためにそのようなユーティリティを使用したことがありますか?それについてどう思いますか?