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日

#188GUI

每月下载量27次
用于 heartless_tk

MIT/Apache

2.5MB
16K SLoC

此项目提供了对Tcl/Tk命令的安全且易于使用的API绑定。

特性

  1. 对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绑定的命名约定

  1. 将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) )?;
    
  2. 将Tcl的命令式风格转换为Rust的对象式风格

    Tk命令的形式是“动词 宾语 选项”,例如。

    pack .lb -fill both
    

    等价的Rust语句形式为“对象 方法 选项”,如下所示。

    lb.pack( -fill("both") )?; // use pack(()) without any option.
    
  3. 将Tk的空格分隔命令转换为Rust的下划线分隔函数名。

    Tk命令是空格分隔的,例如。

    tk fontchooser show
    

    等价的Rust语句如下。

    tk.fontchooser_show()?;
    

    用户可以查看Tk命令参考,找到“fontchooser”页面,然后搜索“show”。

  4. 通过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()?;
    

文档

  1. Tk教程

  2. 官方Tk命令参考

许可证

根据Apache License 2.0或MIT许可证,由您选择。

依赖项

~3.5–6.5MB
~113K SLoC