如何使用GTK4按钮增加一个变量?

huangapple go评论70阅读模式
英文:

How can I increment a variable using GTK4 Button?

问题

我想在点击GTK4按钮时增加counter变量。在我提供的代码片段中,counter是在一个Fn闭包中捕获的变量。如何实现这一目标?

英文:

I have the following code excerpt:

let mut counter: u32 = 0;

button.connect_clicked(move |_|
    {
        counter+=1;
        flip_coin(&label)
    }
);

I want to increment the counter variable when I click the GTK4 button. How can I achieve this, since in the code excerpt I provided , counter is a captured variable in a Fn closure.

答案1

得分: 1

为此,您需要使用Cell类,并克隆您的元素,以便它可以在按钮的闭包内使用。

小例子:

let counter = Rc::new(Cell::new(0));

button.connect_clicked(clone!(@strong counter => move |_| {
    counter.set(counter.get() + 1);
    println!("{}", counter.get());
}));

更多详细信息请参考:使用GTK4和Rust进行内存管理

英文:

For this, you need to use the Cell class and to clone your element for it to be used inside the closure of the button.

Small example :

let counter = Rc::new(Cell::new(0));

button.connect_clicked(clone!(@strong counter => move |_| {
       counter.set(counter.get() + 1);
       println!("{}", counter.get());
}));

More details here: Memory management with GTK4 and Rust

huangapple
  • 本文由 发表于 2023年7月11日 06:21:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/76657680.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定