AppCUI::new().log_file("debug.log", false).build()?;
let x = 10;
log!("INFO", "The value of x is: {}", x);

颜色 样式

Color::Black 黑色
Color::White
Color::Yellow 黄色
Color::Pink 紫色
Color::Red 红色
Color::Green 绿色
Color::Blue 蓝色
Color::Gray 灰色
Color::Silver 银色 浅灰
Color::Aqua 亮蓝色
Color::Transparent 透明
Color::RGB(r, g, b) rgb
以下支持 | 链接两种样式
CharFlags::Bold 粗体
CharFlags::Underline  下划线
CharFlags::Italic 斜体
CharFlags::StrikeThrough  中划线
char!("A,red,yellow") 黄色背景红色字母A
char!("A,fore=White,back=DarkBlue,attr=[Bold,Underline]")
char!("<-,red") 向左箭头,红色,背景透明char!("ArrowLeft,fore=Red,back=Transparent")

键盘鼠标

MouseEvent::Enter 鼠标光标进入控件
MouseEvent::Leave 鼠标光标离开控件
MouseEvent::DoubleClick(MouseEventData) 在控件上双击鼠标按钮
let k = Key::new(KeyCode::F1,KeyModifier::Alt | KeyModifier::Ctrl); F1+ALt或F1+Ctrl
let k2 = Key::new(KeyCode::Enter, KeyModifier::None);
let k = Key::from(KeyCode::F1);
let k2 = key!("Enter")
let k4 = key!("Ctrl+Alt+F")

剪贴板

Clipboard::set_text("Hello world");
Clipboard::has_text() 剪贴板是否为空 true false
Clipboard::clear() 清空
if let Some(text) = Clipboard::text() {  //}

布局

x:100,y:100   -30000 30000之间
w:10%,h:10%  宽高 -300%--300%
l r t b  左右上下
d 父控件上方式 LT左上,T,rt,l,c,r,bl,b,rb
a对其方式 与d值一样
enabled = true启用控件
visible = true可见

组件

手风琴
  let mut t = accordion!("l:1,t:1,r:1,b:3,panels:['Panel &1','Panel &2','Panel &3']");
    t.add(0, button!("T1-1-A,r:1,b:0,w:10,type:flat"));
    t.add(0, button!("T1-1-B,d:c,w:10,type:flat"));      
    t.add(1, button!("T1-2-A,r:1,b:0,w:14,type:flat"));
    t.add(1, button!("T1-2-B,d:c,w:14,type:flat")); 
    t.add(2, button!("T1-3-A,r:1,b:0,w:20,type:flat"));
    t.add(2, button!("T1-3-B,d:l,w:20,type:flat"));  
    w.add(t); 
按钮
#[Window(events = ButtonEvents)]
button!("'&Inactive',x:19,y:2,w:15,enabled:false")
button!("&Flat,x:2,y:4,w:32,type:flat")
复选
#[Window(events = CheckBoxEvents)]
checkbox!("Text='中国 &S',x:2,y:4,w:20,h:3,checked:true,type:CheckMark")
类型 CheckBox复选框 YesNo PlusMinus加减
checkbox!("Caption='&Inactive checkbox',x:2,y:3,w:15,enabled:false");
颜色选择
#[Window(events = ColorPickerEvents)]
colorpicker!("White,x:13,y:1,w:24")
下拉列表
#[Window(events = ComboBoxEvents)]
let c3 = combobox!("x:1,y:1,w:20,items=['Red','Greem','Blue'],index:2");
 w.add(label!("'Select animal',x:1,y:1,w:30"));
let mut c = ComboBox::new(Layout::new("x:1,y:2,w:30"), combobox::Flags::ShowDescription);
c.add_item(combobox::Item::new("Cheetah","(120 km/h)"));
w.add(c);
标签
label!("MyLabel,x:10,y:5,w:15");
列表框
#[Window(events=ListBoxEvents)]
listbox!("d:c,w:100%,h:100%,flags: ScrollBars+CheckBoxes+SearchBar,items:['Red','Green','Blue','Yellow','Black','White'],tsm:4,lsm:1")
let mut l = listbox!("d:c,w:100%,h:100%,flags: ScrollBars+CheckBoxes+SearchBar, lsm:2");
l.add_item(listbox::Item::new("Dog (man best friend)", false));
水平线或拆分器
let hl1 = hline!("x:1,y:1,w:10");
let hl2 = hline!("TestLine,x:1,y:3,w:30,flags:DoubleLine+HasTitle");双线包含标题
vline!("x:1,y:1,h:15,flags:DoubleLine") 竖向线
let vs_4 = hsplitter!("x:1,y:1,w:20,h:10,pos:20,resize:PreserveBottomPanelSize");
vsplitter!("x:1,y:1,w:20,h:10,pos:20,resize:PreserveRightPanelSize");
数字加减选择
let n3 = numericselector!("class:i32,value:5,min:0,max:10,step:1,x:1,y:1,w:20");
let n4 = numericselector!("u32,5,0,10,step:1,x:1,y:1,w:20,format:Percentage");
let n5 = numericselector!("i32,5,0,10,step:1,x:1,y:1,w:20,flags:ReadOnly,format:Percentage");
面板
let p1 = panel!("caption='a panel',x:10,y:5,w:15");
let p2 = panel!("MyPanel,x:10,y:5,w:15,type:Border");
Page页面类型 TopBar顶部类型
密码框
#[Window(events = ButtonEvents+PasswordEvents)]
let disabled_password = password!("x:10,y:5,w:15,enable=false");
let hidden_password = password!("pass='admin',x=9,y:1,align:center,w:9,visible=false");
路径查找
w.add(pathfinder!("path: 'C:\\Program Files',x:1,y:1,w:36,h:1"));
    w.add(pathfinder!("'C:\\Program Files',x:1,y:3,w:36,h:1, flags: ReadOnly"));
    w.add(pathfinder!("path:'C:\\Program Files\\Țambal.exe',x:1,y:5,w:36,h:1,enable: false"));
进度条
    let pg1 = progressbar!("total: 1000, x:10,y:5,w:15");
let pg2 = progressbar!("count: 125 ,x:10,y:5,w:15, text: 'Copying ...'");
单选
let mut group_1 = panel!("'Group 1',x:1,y:3,w:26,h:7");
        win.g1_r1 = group_1.add(radiobox!("&Meters,x:1,y:1,w:20,select:true"));
        win.g1_r2 = group_1.add(radiobox!("&Centimeters,x:1,y:2,w:20"));
        win.g1_r3 = group_1.add(radiobox!("&Kilometers,x:1,y:3,w:20"));
        type=Circle
radiobox!("'Option 3 (disabled and not-selected)',x:1,y:3,w:40,type=Circle,selected:false, enabled:false")
Tab标签
 let mut t = tab!("tabs: [Type,Flags,Sizes],tw:9,l:1,t:1,r:1,b:3");
 文本域文本框
 let textarea2 = textarea!("'some text to print',d:c,h:100%,flags:ReadOnly");
ShowLineNumber+ReadOnly+ScrollBars
textfield!("'read only text',l:1,t:5,r:1,h:1, flags: ReadOnly") flags: ProcessEnter 处理回车
  • 对话框
    dialogs::error("Error","An error"); 红色错误对话框
    if dialogs::retry("Error","An error?") { 重试红色对话框 Retry Cancel
      dialogs::alert("Error","An error has occured during the last operation"); 黄色错误
    }
    if dialogs::proceed("Alert","An error .\nContinue anyway ?") {
      //警告黄色 两个按钮Yes No
    }
    f dialogs::validate("Question","Are you sure you want to proceed ?") {//绿色 Yes No
     dialogs::message("Success","All files have been copied");
    }
    if let Some(file) = dialogs::open("Open surfaces", "", dialogs::Location::Last, Some("Surface image = [srf]"), OpenFileDialogFlags::Icons) {}
    if let Some(path) = dialogs::save("Save surface", "", dialogs::Location::Last, Some("Surface image = [srf]"),SaveFileDialogFlags::Icons|SaveFileDialogFlags::ValidateOverwrite) {}
    文件夹选择
    if let Some(folder_path) = dialogs::select_folder(
              "Select Folder",
              dialogs::Location::Current,
              dialogs::SaveFileDialogFlags::None 
          ) {}
    弹出对话框
    if let Some(res) = dialogs::input::<i32>("Title", "Enter a positivevalue", None, Some(|&value| {
      if value < 0 {
          Err("Value must be positive".to_string())
      } else {
          Ok(())
      }
    })) {
      // res value contains the selected value
    } else {
      // the user canceled the dialog
    };
    更新主题 DarkGray Light
    let mut my_theme = Theme::new(Themes::Default);
    App::set_theme(my_theme);
    定时器
    if let Some(timer) = w.timer() {
              timer.start(Duration::from_secs(1));
          }
作者:Yoby  创建时间:2025-07-15 12:17
最后编辑:Yoby  更新时间:2025-07-16 00:43
上一篇:
下一篇: