我正在尝试重新创建this Python project in Rust。 Python版本使用PyQt5,但Ruby版本使用GTK。当使用Rust或Ruby时,我不知道当用户按下“Tweet”时如何正确执行“推特”代码。
用户按下的按钮称为“发送”,按下时会调用此代码:
send.connect_clicked(move |_| {
let sent: Option<String> = TextBuffer::get_text(
&TextView::get_buffer(&text).unwrap(),
&TextBuffer::get_start_iter(&TextView::get_buffer(&text).unwrap()),
&TextBuffer::get_end_iter(&TextView::get_buffer(&text).unwrap()), false);
let actual = sent.unwrap();
println!("Text: {}", actual);
let toot = Command::new("t").output()
.expect("Nope");
println!("{}", String::from_utf8_lossy(&toot.stdout));
Notification::new().summary("Sent")
.body(&actual).show().unwrap();
gtk::main_quit();
});
每当用户按下它时,窗口会冻结,直到代码完成运行,然后主窗口退出。
如何正确关闭窗口并执行此代码?它可能非常简单,但我几乎没有正确研究功能。编写Python脚本的坏习惯。
答案 0 :(得分:0)
为了正确关闭主窗口并执行其他任务,我使用了glib中的idle_add
。
thread::spawn(move || {
glib::idle_add(move || {
toot(tweet);
gtk::main_quit();
Continue(false)
});
});