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를 사용하여 첫 번째 프로그램이 생성되고 실행되는 방식입니다.
이제 코드를 간단히 설명하겠습니다.
- #!/bin/bash: 쉘 스크립트의 첫 번째 줄은 bash 쉘 경로를 지정하는 데 사용됩니다.
- GTKDIALOG=gtkdialog: 여기에서는 나중에 gtkdialog로 쉘 스크립트를 실행할 때 이를 사용하기 위한 변수를 정의했습니다. 이 줄은 gtkdialog를 사용하여 생성하는 모든 스크립트에 있어야 합니다.
- export MAIN_DIALOG=: 인터페이스에 대한 모든 구문을 포함하도록 정의한 또 다른 변수입니다. MAIN_DIALOG를 원하는 이름으로 바꿀 수 있지만 스크립트의 마지막 4줄에서도 바꿔야 합니다.
- 창 제목: 이 코드는 설명할 필요가 없을 것 같습니다. 창의 기본 아이콘인 제목을 만들고 크기 조정이 가능한지 여부를 선택하고 너비와 너비를 정의했습니다. 물론 우리가 원하는 높이는 모두 부차적인 옵션이므로 원하는 경우
태그를 사용할 수 있습니다. : vbox 태그를 사용하여 수직 상자를 만듭니다. hbox 및 버튼 등과 같은 다른 태그를 포함하려면 vbox 태그를 만드는 것이 중요합니다. : 여기서는 태그를 사용하여 가로 상자를 만들었습니다. “space-fill” 및 “space-expand”는 창을 통해 hbox를 확장하는 옵션입니다. - <버튼>: 새 버튼을 만듭니다.
- : 이것은 버튼의 기본 텍스트입니다. 을 사용하여 레이블 태그를 닫았습니다. 물론 우리가 사용하는 모든 태그를 닫는 것이 매우 중요합니다.
: 버튼을 클릭하면 발생하는 일입니다. 원하는 경우 쉘 명령을 실행하거나 원하는 경우 다른 파일을 실행할 수 있습니다. 다른 많은 작업과 신호도 있습니다. 을 사용하여 닫는 것을 잊지 마세요. - : 버튼 태그를 닫습니다.
- : hbox 태그를 닫습니다.
- : 창 태그를 닫습니다.
마지막 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
이제 코드를 간단히 설명하겠습니다.
를 사용하여 콤보박스 위젯을 생성합니다. 태그는 선택한 항목이 저장될 변수의 기본 이름입니다. 나중에 에코를 사용하여 선택한 항목을 인쇄하는 데 이 변수를 사용했습니다. 는 가로 구분 기호이므로 width-request 옵션을 사용하여 기본 너비를 설정할 수 있습니다. - <버튼 확인>버튼>은 클릭하는 순간 창을 닫는 확인 버튼입니다. 매우 유용하므로 맞춤 버튼을 만들 필요가 없습니다.
나의 세 번째 프로그램
'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
여기에서는 코드에 대해 좀 더 자세히 설명합니다.
- 우리는
을 사용하여 두 개의 노트북 탭을 만들었습니다. tab-label 옵션은 탭을 만들 수 있는 곳이고, gtkdialog는 입력한 레이블에 따라 탭을 생성하며, 모든 는 탭으로 정의되므로 첫 번째 탭은 첫 번째 , 두 번째 탭은 두 번째 로 시작합니다. 는 텍스트 위젯이므로 태그는 새 스핀 버튼을 생성합니다. range-min 옵션은 최소값이고 range-max는 스핀 버튼의 최대값이고 range-value는 스핀의 기본값입니다. 단추. 에 변수 “myscale”을 지정했습니다. - echo 및 $myscale 변수를 사용하여 선택한 값을 인쇄했습니다. 여기서 작업의 기본 신호는 "value-changed"로 이를 수행하는 데 도움이 되었습니다.
이것은 단지 예시 창일 뿐이며, 원하는 경우 gtkdialog를 사용하여 더 복잡한 인터페이스를 생성할 수 있습니다. gtkdialog 웹사이트의 공식 문서를 탐색하여 아래 링크에서 모든 gtkdialog 태그를 볼 수 있습니다.
Gtkdialog 문서
이전에 쉘 스크립트용 GUI를 생성하기 위해 gtkdialog를 사용한 적이 있습니까? 아니면 인터페이스를 생성하기 위해 그러한 유틸리티를 사용한 적이 있습니까? 당신이 그것에 대해 어떻게 생각하십니까?