【问题标题】:How to insert text exactly into Gtk::ProgressBar in GTK-3 (Like in GTK-2)如何在 GTK-3 中将文本准确插入 Gtk::ProgressBar(就像在 GTK-2 中一样)
【发布时间】:2020-02-28 17:34:56
【问题描述】:

我需要像这个例子一样向进度条添加文本:

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

但这对我不起作用。进度条上方显示文本“Fraction done”,但应准确显示在其中。 是什么原因?如何解决?

[https://i.stack.imgur.com/PJJqs.png]

[https://i.stack.imgur.com/o00x8.png]

操作系统 - Ubuntu 18.04.3 LTS

【问题讨论】:

    标签: migration gtk progress-bar gtkmm


    【解决方案1】:

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

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      相关资源
      最近更新 更多