问题标签 [gtk-rs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
145 浏览

gtk - 如何在 Gtk-rs 中创建建议的圆形按钮?

如何在 Gtk 中创建圆形和建议/破坏性按钮?

我已经尝试过使用 get_style_context() 但似乎我只能使用一次。有没有“CSS方式”来实现这一点?

0 投票
1 回答
279 浏览

rust - 更新 DrawingArea 的绘图功能

我想更新 DrawingArea 内的 cairo 绘图。我试图通过调用DrawingArea::connect_draw(...)一个新函数作为参数来实现这一点。我的问题是它不会替换原始绘图功能,而是在显示窗口时调用两者。这是一个例子

我希望显示半个圆圈。然而,即使我尝试替换 connect_draw,旧的完整圆圈仍然存在。我该如何正确替换它?

0 投票
1 回答
469 浏览

rust - 如何从单击按钮的条目中获取信息?

我想从单击按钮的条目中获取输入,并在单击另一个按钮时显示该信息。这给了我一个错误,因为闭包拥有我的firstname变量的所有权,我想在其中存储信息。

如何从条目中获取信息并重新使用它?

0 投票
1 回答
557 浏览

window - gtk/cairo:只显示自定义形状的绘图

我只想在绘图区域内显示开罗绘图,但由于某种原因,绘图周围总是有一个彩色矩形背景。我怎样才能摆脱这个?我特别不想将它设置为透明(因为我可能不支持透明度),而是只显示绘图本身。

我的例子是在 Rust 中使用 gtk-rs,但其他语言的任何提示也很棒!

我希望它只显示圆圈,并在圆圈周围查看并保持浏览器可点击。我怎么能做到这一点?

在此处输入图像描述

0 投票
0 回答
49 浏览

rust - 创建自定义形状的 Cairo::Region

浏览cairo::Region的文档,我找不到任何允许我创建非矩形区域的函数。我错过了什么还是这根本不可能?

0 投票
1 回答
757 浏览

rust - 连接到 Glade 文件中定义的自定义 GTK 信号

我想将处理程序连接到自定义信号。在我的林间空地文件中,我有一个带有一些按钮的窗口。窗口在 Rust 中是这样加载的:

此窗口中的按钮定义了此信号:

在 Python 中,我可以使用简单的方法注释进行连接:

但是如何将 Rust 中的函数连接到这个信号呢?

AFAIK 我在 Rust 中没有这样的注释。我需要类似的东西window.connect_signal("_on_start_clicked", handler);

我正在使用 Rust 和 gtk 板条箱。

0 投票
0 回答
24 浏览

rust - 如何存储来自 DrawingArea::connect_draw 的信号 ID?

DrawingArea每次调用该draw()函数时,我都想刷新 a 。我已经阅读了 DrawingArea 的更新绘图功能,所以我知道在连接新绘图信号之前我需要断开旧绘图信号。DrawingArea有方法disconnect(id: SignalHandlerId),所以这段代码编译,但不显示绘图:

当我尝试保存 id 以在连接新信号之前断开旧信号时,我需要明确声明idSignalHandlerId

问题是:编译器告诉我这gtk::glib是私有的,所以我不能使用它。如果我尝试添加 glib 板条箱并使用它而不是gtk::glib,编译器会告诉我我正在使用glib::SignalHandlerIdDrawingArea::connect_draw()返回的是glib::signal::SignalHandlerId.

如何声明id变量以便存储旧的信号 ID?

编辑:这只是版本不匹配,我试图使用glibversion 0.9.0,但gtk正在使用0.8.2.

0 投票
1 回答
109 浏览

multithreading - 如何处理 Gtk-rs 线程中不可恢复的错误?

我正在编写一个 Gtk-rs 应用程序。我有一个后台线程通过 MPSC 通道向 Gtk 主线程发送事件。我应该如何处理这个后台线程中不可恢复的错误?

我不想处理它们(恐慌!或不恐慌!)。

目前,线程会恐慌,但主应用程序不会停止。我希望整个应用程序因错误而崩溃。

  • 我不想通过通道发送结果,因为它不适用于调用函数中的恐慌。
  • 加入线程可以解决问题,但我认为我不能用 Gtk-rs 来做,因为它是阻塞的。

这个问题类似于如何在线程上引起恐慌以立即结束主线程?,但我想知道 Gtk-rs 有更好的解决方案。

0 投票
1 回答
617 浏览

rust - Rust Gtk 使用 glade 文件从 pixbuf 设置 GtkImage

我正在尝试将图像从缩放的 pixbuf 加载到 Glade with Rust 的现有 GtkImage 小部件。我已阅读有关此主题的所有 Gtk-rs 文档,它应该基于此工作。但是,尝试从 pixbuf 加载时总是会出现问题。这是我重现错误的代码:

这是林间空地文件 test.glade

当我尝试从 pixbuf 加载图像时,我总是收到以下错误消息:expected struct gdk_pixbuf::Pixbuf, found enumstd::result::Result。我正在使用安装了最新 Rust 的 Linux。

0 投票
1 回答
240 浏览

rust - 如何使`Button`s小于它们的最小尺寸?

我目前正在设置一些按钮,问题是我需要将其中的 10 个压缩成 480 像素。

我发现按钮的最小宽度是50px;如果我将其调整为小于 50,它不会改变。我想将它们的大小更改为 48px 甚至更小,但我不知道如何进行。

对于 GTK 库,我使用的是 RELM。我在GTK-rs 的 GitHub 上询问过,但他们声称问题出在 GTK 上。

我当前的代码如下

即使我设置了width_request,最小的宽度看起来也是 50px。

有什么办法可以将按钮宽度减小到 45px 或更小?