GtkButton 与 GtkLabel 字体浮雕:如何自定义其中之一?

发布于 2024-11-05 16:55:26 字数 1391 浏览 0 评论 0原文

上下文

我正在使用 PyGtk 开发一个应用程序,它或多或少可以作为面板工作,很像 gnome-panel。理想情况下,在我正在制作的面板上,我想要一个没有边框的按钮(注意:我正在使用 PyGtk 学习 GUI 编码)。

问题

我已经从另一个线程理解以及文档 gtk_button_set_relief(GtkButton, GTK_RELIEF_NONE) 仅取消 GTK_STATE_NORMAL 上的按钮浮雕。因此,当将鼠标悬停在按钮上时,浮雕会再次出现(旁注:坦率地说,这些选项实际上已部分解决,这很烦人)。

解决该问题的另一种方法是使用 GtkLabel 并将 GtkEventBox 设为其父级,并使其充当按钮。然而有一个问题:虽然 GtkButton 字体有浮雕,但 GtkLabel 却没有。请参见下面的屏幕截图:

从左到右:不带字体浮雕的 GtkLabel 和带字体浮雕的 GtkButton

从左到右:不带字体浮雕的 GtkLabel 和带字体浮雕的 GtkButton

问题

现在也许您可以用您的建议帮助我解决上述问题。我在想的是:

  1. 是什么导致这些 GtkWidgets 上的字体浮雕:主题还是 Gtk 基础本身?
  2. 如何为标签字体添加浮雕?或者
  3. 我如何删除所有状态下按钮的边框浮雕?
  4. 更一般地说,我如何使用 PyGtk 创建自己的小部件(子类化 GtkLabel 或 GtkButton)? (我已经看到​​这个线程上的示例,但我相信这是C)
  5. 有没有其他选择我没想到?
  6. 我应该完全使用另一个 GUI 库吗?

谢谢。 本杰明:)


编辑: GtkEventBox 的前调整大小握把手柄问题似乎是 Gtk+ 错误

Context

I'm working on an application with PyGtk that would more or less work as a panel, much like gnome-panel. Ideally, on the panel i am making, i want a button without border (NB: i am in the process of learning GUI coding with PyGtk).

Problem

I have understood from another thread as well as documentation that the gtk_button_set_relief(GtkButton, GTK_RELIEF_NONE) cancels the button relief on GTK_STATE_NORMAL only. Hence when hovering the button, relief appears again (side note: this is frankly annoying that such options are partially worked out really).

An alternative to the problem is to use a GtkLabel and make a GtkEventBox its parent and make it function as a button. There is an issue however: while a GtkButton font has a relief, the GtkLabel's has none. See screenshot here below:

From left to right: GtkLabel without font relief and GtkButton with font relief

From left to right: GtkLabel without font relief and GtkButton with font relief

Questions

Now perhaps you can help me to solve the above with your suggestions. What i am thinking of is:

  1. What is causing the relief of the font on these GtkWidgets: the theme or the Gtk base itself?
  2. How can i add relief to the font of the label? OR
  3. How can i remove the border relief of the button in all states?
  4. More generally, how can can i create my own widget (subclassing either GtkLabel or GtkButton) using PyGtk? (I have seen an example on this thread, but that's C i believe)
  5. Is there any alternative i haven't thought of?
  6. Should i use another GUI library altogether?

Thanks.
Benjamin :)


Edit: the former resize-grip handle issue with GtkEventBox appears to be the effect of a Gtk+ bug.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文