В AutoHotkey (инструмент написания сценариев только для Windows) можно создавать подробные графические пользовательские интерфейсы с очень небольшим количеством строк кода. Вы создаете графический интерфейс и добавляете или редактируете его элементы. Любой элемент может иметь прослушиватель, установленный только с помощью опции g-label
.
Рассмотрим этот интерфейс:
Для лучшего понимания вот полный исходный код AHK.
gui, color, BADEFA
gui, font, s6 cRed, Verdana
gui, add, text, x150 y5, Hello!
gui, font
gui, add, text, x10 y5, This is a gui.
gui, add, dropDownList, w60 gcolor_selected vselected_color, Black|White|Green||Blue
gui, add, text, xp+70 yp+0 vcolor_prompt w120
gui, add, picture, x10, kitten.png
gui, show, center w300, I am a beatiful GUI
return
color_selected:
gui, submit, nohide
guicontrol,, color_prompt, You selected %selected_color%
gui, font, c%selected_color%
guicontrol, font, color_prompt
return
Данный скриншот был сделан с использованием WINE . Я ищу язык, инструмент, скрипт, который предлагает аналогичную GUI-функциональность, как AHK для Windows, в основном с точки зрения простоты. Синтаксис абсолютных координат (опция x[X] y[Y]
) является центральным требованием. Лучшее, что я мог придумать, это Python's TkInter , который даже не поддерживает абсолютное позиционирование. Это самое компактное решение для Ubuntu?
Не удалось найти никого, таким образом, я сделал тот сам. Tcl/Tk является самым близким, я мог найти, однако это (как имя предполагает) Tcl
код.
Так, это называют TkBash и является оберткой удара вокруг кода tcl. Вот моя попытка воссоздать изображение от вопроса:
#!/bin/bash
tkbash 1 window --theme clam --w 290 -h 200
tkbash 1 --tkcommand ". configure -background lightblue"
tkbash 1 label label1 -x 10 -y 10 -w 80 -h 20 -t "This is a gui."
tkbash 1 label label2 -x 140 -y 10 -w 30 -h 15 -t "Hello!"
tkbash 1 --tkcommand "font create myfont -family Helvetica -size 8"
tkbash 1 label2 --tkcommand "configure -font myfont"
tkbash 1 select select1 -x 10 -y 30 -w 80 -h 20 -t "Black|White|Green||Blue"
tkbash 1 label label3 -x 95 -y 30 -w 120 -h 20
tkbash 1 button button1 -x 245 -y 25 -w 30 -h 30 -t "ok" -c "
selected_color=\"\$(tkbash 1 get select1)\"
tkbash 1 label3 -t \"You selected \$selected_color\""
tkbash 1 image image1 -x 10 -y 60 -w 125 -h 120 --image "kitten.png"