# gtk-zlang **Repository Path**: calvinwilliams/gtk-zlang ## Basic Information - **Project Name**: gtk-zlang - **Description**: gtk4的zlang语言接口封装 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: release - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-11 - **Last Updated**: 2026-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # `gtk-zlang`介绍 `gtk-zlang`是一个`GTK`的`zlang`语言的包装库,提供给开发者使用`zlang`语言快速开发跨平台的桌面应用软件。 `gtk-zlang`是国产编程语言和图形界面库的深度融合,创建者专注于高性能底层支撑上层应用高效开发的国产自研技术栈。 # 特色与亮点 * `GTK`是一个免费、开源、跨平台的图形用户界面(`GUI`)开发工具包,它提供了一套丰富的控件(如按钮、对话框、菜单、滑块等)用于创建GUI图形界面应用程序,它支持`Linux `、` Windows `和`MacOS`;`gtk-zlang`包装了`GTK`,同时还做了一定的封装,使得`zlang`开发者一次编写就能在三大主流操作系统上直接运行; * `gtk-zlang`借助`zlang`编程语言,开发者编写类`C/C++/Java`风格代码、组装`gtk-zlang`控件,就能构建出GUI窗口,快速上手,学习曲线平缓; * 桌面应用软件中有些模块涉及商业机密、算法专利或极致性能要求,开发者可以遵循`zlang`对象开发接口规范,用`C`封装相应功能成`zlang`对象,然后在`zlang`源代码中调用即可; * 不同于`Electron`的臃肿和占内存,`zlang`和`gtk-zlang`技术栈走的是另一条技术路线,解释语言`zlang`可以让开发者快速开发应用软件,应用逻辑细节处理都用`C`封装成对象供`zlang`调用,这样既提高开发效能,又保证了运行性能,同时还极大的缩小了安装包大小和内存占用; * `gtk-zlang`是开源的,这意味着它是社区驱动而不是商业公司控制,学习者可以访问完整源代码也可以敏捷提交补丁和贡献特性; # hello world 国际惯例,学习一门新语言或新技术首先写一个简单完整的示例案例感受一下,表示我上手了。 代码示例:`test_hello.z` ``` import stdtypes stdio gtk ; function int main( array args ) { guiwindow win ; win.SetTitle( "hello gtk-zlang" ); win.SetSize( 400 , 300 ); win.SetChild( guilabel.Create(win,"Hello world").SetExpand(true).SetAlign(guialign.CENTER) ); win.OpenWindow(); return 0; } ``` 执行 ``` $ winzlang test_hello.z ``` ![test_hello](test_hello.png) # 功能和能力 `gtk-zlang`包装了丰富的窗体对象、布局对象、控件对象和工具对象,也封装了一些原生繁琐的常用操作,供`zlang`开发者调用,快速构建桌面应用软件。 以下是目前已经包装封装好的对象清单: * 窗体对象 * [窗口(guiwindow)](doc/guiwindow.md) * [消息对话框(guimessagedialog)](doc/guimessagedialog.md) * [文件对话框(guifilechooserdialog)](doc/guifilechooserdialog.md) * [颜色对话框(guicolorchooserdialog)](doc/guicolorchooserdialog.md) * [字体对话框(guifontchooserdialog)](doc/guifontchooserdialog.md) * 布局对象 * [固定位置布局(guifixedlayout)](doc/guifixedlayout.md) * [盒子布局(guiboxlayout)](doc/guiboxlayout.md) * [对齐盒子布局(guicenterboxlayout)](doc/guicenterboxlayout.md) * [流式盒子布局(guiflowboxlayout)](doc/guiflowboxlayout.md) * [网格布局(guigridlayout)](doc/guigridlayout.md) * [滚动条布局(guiscrollwindowlayout)](doc/guiscrollwindowlayout.md) * [外框布局(guiframelayout)](doc/guiframelayout.md) * [标签页布局(guinotebooklayout)](doc/guinotebooklayout.md) * [分隔栏布局(guipanedlayout)](doc/guipanedlayout.md) * [弹出浮动窗体布局(guipopoverlayout)](doc/guipopoverlayout.md) * [控件对象](doc/guictl.md) * 菜单栏类 * [菜单栏(guimenubar)](doc/guimenubar.md) * [菜单(guimenu)](doc/guimenu.md) * [菜单项(guimenuitem)](doc/guimenuitem.md) * 工具栏类 * [工具栏(guitoolbar)](doc/guitoolbar.md) * [工具栏分割条(guitoolseparatoritem)](doc/guitoolseparatoritem.md) * 普通控件类 * [标签控件(guilabel)](doc/guilabel.md) * [行编辑控件(guiedit)](doc/guiedit.md) * [块编辑控件(guieditarea)](doc/guieditarea.md) * [高级块编辑控件(guisourceeditarea)](doc/guisourceeditarea.md) * 按钮和选择框类 * [按钮控件(guibutton)](doc/guibutton.md) * [切换按钮控件(guitogglebutton)](doc/guitogglebutton.md) * [数值调整按钮控件(guispinbutton)](doc/guispinbutton.md) * [链接按钮控件(guilinkbutton)](doc/guilinkbutton.md) * [单选框控件(guiradiobutton)](doc/guiradiobutton.md) * [多选框控件(guicheckbutton)](doc/guicheckbutton.md) * 列表和表格类 * [列表框控件(guilistbox)](doc/guilistbox.md) * [下拉列表框控件(guicombobox)](doc/guicombobox.md) * [表格控件(guitable)](doc/guitable.md) * [树型表格控件(guitreetable)](doc/guitreetable.md) * 杂类 * [容量控件(guilevelbar)](doc/guilevelbar.md) * [进度条控件(guiprogressbar)](doc/guiprogressbar.md) * [切换开关控件(guiswitch)](doc/guiswitch.md) * [日历控件(guicalendar)](doc/guicalendar.md) * [图像控件(guiimage)](doc/guiimage.md) * [视频播放器控件(guivideo)](doc/guivideo.md) * [分隔线控件(guiseparator)](doc/guiseparator.md) * [所有布局对象和控件对象都有的公共属性和函数](doc/guiwidget.md) * 工具对象 * [鼠标(guimouse)](doc/guimouse.md) * [键(guikey)](doc/guikey.md) * [方向(guiorientation)](doc/guiorientation.md) * [控件对齐(guialign)](doc/guialign.md) * [文本对齐(guijustify)](doc/guijustify.md) * [监视器(guimonitor)](doc/guimonitor.md) * [剪贴板(guiclipboard)](doc/guiclipboard.md) * [协议许可(guilicense)](doc/guilicense.md) # 官方提供的控件使用代码示例目录 源代码包路径:`\gtk\test\*.z`。 # 官方开发的桌面应用软件 * [zcrypto](https://gitee.com/calvinwilliams/zcrypto) —— 用`zlang`语言+`gtk-zlang`开发的桌面安全算法工具(包含命令行模式和图形模式) * [ZEUX](https://gitee.com/calvinwilliams/ZEUX) —— 用`zlang`语言+`gtk-zlang`开发的桌面文本/源代码编辑器 * [ZephPlayer](https://gitee.com/calvinwilliams/zephplayer) —— 用`zlang`语言+`gtk-zlang`开发的桌面多媒体播放器 [下一章:窗口对象(guiwindow)](doc/guiwindow.md)