12个版本
0.1.10 | 2024年2月3日 |
---|---|
0.1.9 | 2024年1月11日 |
0.1.8 | 2023年11月28日 |
0.1.6 | 2023年7月30日 |
0.0.1 | 2020年2月11日 |
#188 在 GUI
每月下载量27次
用于 heartless_tk
2.5MB
16K SLoC
此项目提供了对Tcl/Tk命令的安全且易于使用的API绑定。
特性
- 对Rust程序员和Tk程序员都友好的API。
快速入门
快速浏览
use tk::*;
use tk::cmd::*;
fn main() -> TkResult<()> {
let tk = make_tk!()?;
let root = tk.root();
root.add_label( -text("constructs widgets and layout step by step") )?
.pack(())?;
let f = root
.add_frame(())?
.pack(())?;
let _btn = f
.add_button( "btn" -text("quit") -command("destroy .") )?
.pack(())?;
Ok( main_loop() )
}
再次浏览
use tk::*;
use tk::cmd::*;
fn main() -> TkResult<()> {
let tk = make_tk!()?;
tk.root().add_widgets(
-pack( -label( -text("constructs widgets and layout in one expression") ))
-pack( -frame( -pack( -button( "btn" -text("quit") -command("destroy .") ))))
)?;
Ok( main_loop() )
}
将Tk命令转换为Rust绑定的命名约定
-
将Tk小部件构造函数前缀为
add_
,并将选项值用括号括起来。添加小部件的Tk命令看起来像
构造函数路径-选项和值
,例如。label .lb -text "lorem ipsum" -width 50 -height 20
等价的Rust语句如下。
let lb = root.add_label( /*".lb"*/ -text("lorem ipsum") -width(50) -height(20) )?;
-
将Tcl的命令式风格转换为Rust的对象式风格
Tk命令的形式是“动词 宾语 选项”,例如。
pack .lb -fill both
等价的Rust语句形式为“对象 方法 选项”,如下所示。
lb.pack( -fill("both") )?; // use pack(()) without any option.
-
将Tk的空格分隔命令转换为Rust的下划线分隔函数名。
Tk命令是空格分隔的,例如。
tk fontchooser show
等价的Rust语句如下。
tk.fontchooser_show()?;
用户可以查看Tk命令参考,找到“fontchooser”页面,然后搜索“show”。
-
通过
set_
前缀区分set和get。在Tk中,通过提供或省略值参数来区分set和get是很常见的,例如。
wm title window "Lorem ipsum"
表示将窗口标题设置为“Lorem ipsum”,而wm title window
表示获取窗口的标题。等价的Rust语句如下。
window.set_wm_title( "Lorem ipsum" )?; window.wm_title()?;
文档
许可证
根据Apache License 2.0或MIT许可证,由您选择。
依赖项
~3.5–6.5MB
~113K SLoC