ウェブサイト検索

Gtkdialog - シェルスクリプトを使用してLinuxでグラフィカル(GTK +)インターフェースとダイアログボックスを作成する


Gtkdialog(またはgtkdialog)は、Linuxシェルスクリプトを使用してGTKライブラリを使ったGTK+インターフェースおよびダイアログボックスを作成および構築するためのオープンソースの便利なユーティリティです。xmlのような構文を使用することで、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を使用して作成および実行されたあなたの最初のプログラムの方法です。

さて、これからコードを簡単に説明します。

  1. #!/bin/bash: すべてのシェルスクリプトの最初の行であり、bashシェルのパスを指定するために使用されます。
  2. GTKDIALOG=gtkdialog: ここでは、gtkdialogを使用してシェルスクリプトを実行する際に後で使用する変数を定義しました。この行は、gtkdialogを使って作成するすべてのスクリプトに含める必要があります。
  3. export MAIN_DIALOG=:私たちが定義した別の変数で、インターフェースのすべての構文を含みます。MAIN_DIALOGは任意の名前に置き換えることができますが、スクリプトの最後の4行にも同様に置き換える必要があります。
  4. ウィンドウタイトル: このコードは説明する必要がないと思います。私たちはタイトルを作成し、ウィンドウのデフォルトアイコンを設定し、リサイズ可能かどうかを選択し、当然、希望する幅と高さを定義しました。もちろん、これらすべてのオプションは二次的なものです。必要であれば、単に<window>タグを使用することができます。
  5. <vbox> : vboxタグを使用して垂直ボックスを作成します。他のタグ(hboxやボタンなど)を含むためには、vboxタグを作成することが重要です。
  6. <hbox>: ここでは、<hbox> タグを使用して水平ボックスを作成しました。“space-fill” と “space-expand” は、ウィンドウを通じて hbox を拡張するオプションです。
  7. <button>: 新しいボタンを作成します。
  8. <label>: これはボタンのデフォルトテキストです。</label> を使ってラベルタグを閉じました。当然、使用するすべてのタグを閉じることは非常に重要です。
  9. <action>: ボタンがクリックされたときに何が起こるかです。必要であればシェルコマンドを実行したり、他のファイルを実行したりすることができます。他にも多くのアクションや信号がありますので、</action>を使って閉じるのを忘れないでください。
  10. </button>: ボタンタグを閉じるため。
  11. </hbox>: hbox タグを閉じるためのものです。
  12. </window>: ウィンドウタグを閉じるための.

作成するすべてのシェルスクリプトには、最後の4行も含める必要があります。これらは、ウィンドウを中央に配置するために –center オプションを使用して gtkdialog コマンドで MAIN_DIALOG 変数を実行します。実際に非常に便利です。

私の第二のプログラム

同様に、別のファイルを作成し、それをsecondprogramと名付け、次の全内容を追加してください。

#!/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

さて、これからコードを簡単に説明します。

  1. 私たちは<combobox>を使用してコンボボックスウィジェットを作成します。<variable>タグは、選択されたアイテムが保存される変数のデフォルト名です。この変数を使用して、後でechoを使って選択されたアイテムを印刷しました。
  2. <hseparator>は水平方向の区切りであり、width-requestオプションを使用してデフォルトの幅を設定できます。
  3. <button ok></button>は、クリックすることでウィンドウを閉じるOKボタンで、非常に便利ですので、カスタムボタンを作成する必要がありません。
私の第三のプログラム

別のファイルを作成し、その名前を「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

ここでは、コードの説明をより詳細に行います。

  1. 私たちは、<notebook>を使用して2つのノートブックタブを作成しました。タブラベルオプションではタブを作成できます。gtkdialogは、入力したラベルに応じてタブを作成します。すべての<vbox>はタブとして定義されるため、最初のタブは最初の<vbox>から始まり、2番目のタブは2番目の<vbox>から始まります。
  2. <text>はテキストウィジェットであり、<label>タグを使用してそのデフォルトテキストを設定しました。
  3. <spinbutton> タグは新しいスピンボタンを作成します。 range-min オプションはスピンボタンの最小値であり、range-max はスピンボタンの最大値で、range-value はスピンボタンのデフォルト値です。
  4. 私たちは<spinbutton>に変数「myscale」を与えました。
  5. 選択した値をエコーと $myscale 変数を使用して印刷しました。ここでのアクションのデフォルト信号は「value-changed」で、私たちがそれを実現するのに役立ちました。

これは単なる例のウィンドウです。必要に応じてgtkdialogを使用してより複雑なインターフェースを作成できます。以下のリンクからgtkdialogの公式ドキュメントを参照して、すべてのgtkdialogタグを確認できます。

Gtkdialog ドキュメンテーション

これまでにシェルスクリプトのためにgtkdialogを使ってGUIを作成したことはありますか?それとも、インターフェースを作成するためにそのようなユーティリティを使用したことがありますか?それについてどう思いますか?

関連記事: