rust - 如何在函数中调用 FLTK 代码?
问题描述
我是 Rust 的新手,正在使用 FLTK 构建接口。我有以下主要代码。下面是我要调用来构建组的函数。如果在 main.rs 我从 wallet_add 中提取代码并将其放入 main 中调用它的位置,它将正确显示 Group。
如何获得调用函数的能力?
fn main() {
let cursqllogin = Sqllogin {
usrname: String::from("root"),
pasword: String::from("system"),
};
crypto_sql::sql_run_check();
usrlogin(cursqllogin);
//
// Block Main1 Start
//
// This block of code builds the main screen that the user first sees and makes selections from.
// Main owner John Galway
//
let app = App::default().with_scheme(Scheme::Gtk);
let mut win = Window::default()
.with_size(1240, 625)
.center_screen()
.with_label("Crypto Tracker");
win.end();
win.set_align(unsafe { std::mem::transmute(17) });
win.make_resizable(true);
win.show();
let mut menu = MenuBar::new(0, 0, 1237, 30, "File");
menu.end();
win.add(&menu);
menu.add("File/Preferences", Shortcut::None, MenuFlag::Normal, |_| {});
menu.add("File/Exit", Shortcut::None, MenuFlag::Normal, |_| {
std::process::exit(0)
});
menu.add(
"Transactions/Wallet or Exchange",
Shortcut::None,
MenuFlag::Normal,
move |_| {
wallet_add(&win);
},
);
menu.add(
"Transactions/Coins",
Shortcut::None,
MenuFlag::Normal,
move |_| {
},
);
menu.add(
"Transactions/Transactions",
Shortcut::None,
MenuFlag::Normal,
|_| {},
);
menu.add(
"Reports/Manual Pricing",
Shortcut::None,
MenuFlag::Normal,
|_| {},
);
menu.add(
"Reports/Gains Report",
Shortcut::None,
MenuFlag::Normal,
|_| {},
);
menu.add(
"Automation/Coin Pricing",
Shortcut::None,
MenuFlag::Normal,
|_| {},
);
menu.add(
"Automation/Harvest Transactions",
Shortcut::None,
MenuFlag::Normal,
|_| {},
);
app.run().unwrap();
}
pub fn wallet_add(mut i32: winw){
println!("in wallet trans");
let mut wall_group = Group::new(50, 90, 500, 300, "Wallet Data Add/Change/Delete");
wall_group.end();
winw.redraw();
wall_group.set_frame(FrameType::FlatBox);
wall_group.set_color(Color::by_index(2));
winw.add(&wall_group);
let mut wall_name = fltk::input::Input::new(180, 105, 170, 20, "Wallet Name:");
wall_group.add(&wall_name);
let mut wall_username = fltk::input::Input::new(180, 130, 170, 20, "Wallet Username:");
wall_group.add(&wall_username);
let mut wall_password = fltk::input::Input::new(180, 155, 170, 20, "Wallet Password:");
wall_group.add(&wall_password);
let mut btn_wall_add = fltk::button::Button::new(180, 190, 60, 20, "Add");
wall_group.add(&btn_wall_add);
let mut btn_wall_delete = fltk::button::Button::new(260, 190, 60, 20, "Delete");
wall_group.add(&btn_wall_delete);
}
解决方案
pub fn wallet_add(mut i32: winw)
这个函数签名是错误的。尝试将其更改为pub fn wallet_add(winw: &mut Window)
,然后在之前的 main 函数中调用它app.run().unwrap();
walledt_add(&mut winw);
app.run().unwrap();
另请注意,代码样式不是惯用的,尽管它可能是由 fl2rust 自动生成的。
推荐阅读
- javascript - 如何跟踪页面重新加载?
- java - 在windows上从java访问gps位置
- c++ - 我们可以在 C++ 中使用运算符重载添加“用户定义的数据类型”+“预定义的数据类型”吗
- java - 如何从Firebase的for循环一个接一个地显示多个图像
- java - 使用一个语句插入多行与在mysql中批量插入
- reactjs - 如何在情感中将道具传递给样式化的组件?使用打字稿
- php - 输入特定单词的文本值
- java - jpype 简单 jar 导入并运行 main()
- r - 如何计算 X 出现在多个列中的次数(有一些额外的挑战)?
- java - 如何使用带有 Gson 的 Retrofit2 将空字符串视为 null