首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GTK-3 (如GTK-2)中将文本准确插入到Gtk::ProgressBar中

如何在GTK-3 (如GTK-2)中将文本准确插入到Gtk::ProgressBar中
EN

Stack Overflow用户
提问于 2020-02-29 01:34:56
回答 1查看 238关注 0票数 0

我需要向进度栏添加文本,如下例所示:

代码完全取自官方网站:https://developer.gnome.org/gtkmm-tutorial/stable/sec-multithread-example.html.en

但它对我不起作用。显示在进度条上方的文本"Fraction“,但它应该恰好显示在它的内部。原因何在?如何修复它?

[https://i.stack.imgur.com/PJJqs.png] <-应该是这样的

[https://i.stack.imgur.com/o00x8.png] <-看起来像这样

OS - Ubuntu 18.04.3 LTS

EN

回答 1

Stack Overflow用户

发布于 2020-07-23 06:36:29

这是一位专业人士向我展示的一种方法。

通过CSS提供程序使用Gtk::Overlay和min-height。示例如下:

代码语言:javascript
复制
require 'gtk3'

win = Gtk::Window.new('Sample')
win.signal_connect('destroy') { Gtk.main_quit }

box = Gtk::Box.new(:vertical)

overlay = Gtk::Overlay.new
pb = Gtk::ProgressBar.new
pb.set_fraction(0.5)
# pb.text = ("Something going on. . . ")
# pb.set_show_text(true)
provider = Gtk::CssProvider.new
provider.load(data: <<-CSS)
trough,
progress
{
  min-height: 30px;
}
CSS
pb.style_context.add_provider(provider, Gtk::StyleProvider::PRIORITY_USER)
overlay.add(pb)

label = Gtk::Label.new("Something going on. . . ")
overlay.add_overlay(label)

b = Gtk::Button.new(label: 'Button')
b.signal_connect('clicked') do
  Thread.new do
    5.times do |i|
      sleep 1
      pb.fraction = (i + 1) / 5.0
    end
  end
end

win.add box
box.pack_start overlay
box.pack_start b

win.show_all

Gtk.main
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60456728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档