웹사이트 검색

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. 창 제목: 이 코드는 설명할 필요가 없을 것 같습니다. 창의 기본 아이콘인 제목을 만들고 크기 조정이 가능한지 여부를 선택하고 너비와 너비를 정의했습니다. 물론 우리가 원하는 높이는 모두 부차적인 옵션이므로 원하는 경우 태그를 사용할 수 있습니다.
  5. : vbox 태그를 사용하여 수직 상자를 만듭니다. hbox 및 버튼 등과 같은 다른 태그를 포함하려면 vbox 태그를 만드는 것이 중요합니다.
  6. : 여기서는 태그를 사용하여 가로 상자를 만들었습니다. “space-fill” 및 “space-expand”는 창을 통해 hbox를 확장하는 옵션입니다.
  7. <버튼>: 새 버튼을 만듭니다.
  8. : 이것은 버튼의 기본 텍스트입니다. 을 사용하여 레이블 태그를 닫았습니다. 물론 우리가 사용하는 모든 태그를 닫는 것이 매우 중요합니다.
  9. : 버튼을 클릭하면 발생하는 일입니다. 원하는 경우 쉘 명령을 실행하거나 원하는 경우 다른 파일을 실행할 수 있습니다. 다른 많은 작업과 신호도 있습니다. 을 사용하여 닫는 것을 잊지 마세요.
  10. : 버튼 태그를 닫습니다.
  11. : hbox 태그를 닫습니다.
  12. : 창 태그를 닫습니다.

마지막 4줄은 gtkdialog를 사용하여 생성한 모든 쉘 스크립트에도 있어야 하며, 창을 중앙에 배치하기 위해 –center 옵션과 함께 gtkdialog 명령을 사용하여 MAIN_DIALOG 변수를 실행합니다. 이는 실제로 매우 유용합니다.

나의 두 번째 프로그램

마찬가지로, 다른 파일을 만들어 '두 번째 프로그램'으로 이름을 지정하고 다음 전체 내용을 추가합니다.

#!/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. 를 사용하여 콤보박스 위젯을 생성합니다. 태그는 선택한 항목이 저장될 변수의 기본 이름입니다. 나중에 에코를 사용하여 선택한 항목을 인쇄하는 데 이 변수를 사용했습니다.
  2. 는 가로 구분 기호이므로 width-request 옵션을 사용하여 기본 너비를 설정할 수 있습니다.
  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

여기에서는 코드에 대해 좀 더 자세히 설명합니다.

  1. 우리는 을 사용하여 두 개의 노트북 탭을 만들었습니다. tab-label 옵션은 탭을 만들 수 있는 곳이고, gtkdialog는 입력한 레이블에 따라 탭을 생성하며, 모든 는 탭으로 정의되므로 첫 번째 탭은 첫 번째 , 두 번째 탭은 두 번째 로 시작합니다.
  2. 는 텍스트 위젯이므로
  3. 태그는 새 스핀 버튼을 생성합니다. range-min 옵션은 최소값이고 range-max는 스핀 버튼의 최대값이고 range-value는 스핀의 기본값입니다. 단추.
  4. 에 변수 “myscale”을 지정했습니다.
  5. echo 및 $myscale 변수를 사용하여 선택한 값을 인쇄했습니다. 여기서 작업의 기본 신호는 "value-changed"로 이를 수행하는 데 도움이 되었습니다.

이것은 단지 예시 창일 뿐이며, 원하는 경우 gtkdialog를 사용하여 더 복잡한 인터페이스를 생성할 수 있습니다. gtkdialog 웹사이트의 공식 문서를 탐색하여 아래 링크에서 모든 gtkdialog 태그를 볼 수 있습니다.

Gtkdialog 문서

이전에 쉘 스크립트용 GUI를 생성하기 위해 gtkdialog를 사용한 적이 있습니까? 아니면 인터페이스를 생성하기 위해 그러한 유틸리티를 사용한 적이 있습니까? 당신이 그것에 대해 어떻게 생각하십니까?