Поиск по сайту:

Gtkdialog — создание графических (GTK+) интерфейсов и диалоговых окон с использованием сценариев оболочки в Linux


Gtkdialog (или gtkdialog) — это изящная утилита с открытым исходным кодом для создания и построения интерфейсов и диалоговых окон GTK+ с помощью сценариев оболочки Linux и использования библиотеки GTK, а также использования синтаксиса, подобного xml, который упрощает создание интерфейсов с помощью gtkdialog. Он очень похож на самый известный инструмент под названием Zenity, но имеет некоторые полезные настраиваемые функции, которые позволяют легко создавать множество виджетов, таких как vbox, hbox, кнопка, рамка, текст, меню и многое другое.

Читайте также: создание графических диалоговых окон GTK+ с помощью Zenity

Установка Gtkdialog в Linux

Вы можете скачать 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 для создания вертикального блока. Важно создать тег vbox, чтобы он содержал другие теги, такие как hbox, button и т. д.
  6. : здесь мы создали горизонтальный блок с помощью тега . «space-fill» и «space-expand» — это параметры для расширения hbox через окно.
  7. <button>: создайте новую кнопку.
  8. : это текст кнопки по умолчанию. Мы закрыли тег метки с помощью , конечно, очень важно закрыть все теги, которые мы используем.
  9. : Вот что происходит при нажатии кнопки. Вы можете запустить команду оболочки, если хотите, или выполнить любой другой файл, если хотите. Есть также много других действий и сигналов, не Не забудьте закрыть его с помощью .
  10. : чтобы закрыть тег кнопки.
  11. : чтобы закрыть тег hbox.
  12. : чтобы закрыть тег окна.

Последние 4 строки также должны быть во всех сценариях оболочки, которые вы создаете с помощью gtkdialog. Они выполняют переменную MAIN_DIALOG с помощью команды gtkdialog с опцией –center для центрирования окна, что на самом деле очень полезно.

Моя вторая программа

Аналогичным образом создайте еще один файл, назовите его «вторая программа» и добавьте в него следующее содержимое.

#!/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. Мы создаем виджет со списком, используя , тег — это имя по умолчанию переменной, в которой будет храниться выбранный элемент. Мы использовали эту переменную для печати выбранного элемента позже с помощью echo.
  2. — горизонтальный разделитель, вы можете установить для него ширину по умолчанию, используя опцию запроса ширины.
  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 — максимальное значение для кнопки прокрутки, значение диапазона — это значение по умолчанию для прокрутки. кнопка.
  4. Мы присвоили переменную «myscale».
  5. Мы напечатали выбранное значение, используя echo и переменную $myscale, сигналом по умолчанию для действия здесь является «значение изменено», что помогло нам в этом.

Это был всего лишь пример окна. Если хотите, вы можете создавать более сложные интерфейсы с помощью gtkdialog. Вы можете просмотреть официальную документацию на веб-сайте gtkdialog, чтобы просмотреть все теги gtkdialog по ссылке ниже.

Документация Gtkdialog

Использовали ли вы раньше gtkdialog для создания графических интерфейсов для своих сценариев оболочки? Или вы использовали какую-нибудь подобную утилиту для создания интерфейсов? Что вы думаете об этом?