【问题标题】:How can I create a GTK ComboBox with images in Python?如何在 Python 中创建带有图像的 GTK ComboBox?
【发布时间】:2013-03-26 07:33:44
【问题描述】:

如何创建一个显示条目列表的 ComboBox,每个条目都包含一些文本和一个图标?

我将 Python 和 GTK3 与 GObject 内省一起使用。

【问题讨论】:

    标签: python gtk pygobject


    【解决方案1】:

    这是一个如何做到这一点的示例,灵感来自this answer for C

    from gi.repository import Gtk
    from gi.repository import GdkPixbuf
    
    store = Gtk.ListStore(str, GdkPixbuf.Pixbuf)
    
    pb = GdkPixbuf.Pixbuf.new_from_file_at_size("picture.png", 32, 32)
    store.append(["Test", pb])
    
    combo = Gtk.ComboBox.new_with_model(store)
    
    renderer = Gtk.CellRendererText()
    combo.pack_start(renderer, True)
    combo.add_attribute(renderer, "text", 0)
    
    renderer = Gtk.CellRendererPixbuf()
    combo.pack_start(renderer, False)
    combo.add_attribute(renderer, "pixbuf", 1)
    
    window = Gtk.Window()
    window.add(combo)
    window.show_all()
    
    window.connect('delete-event', lambda w, e: Gtk.main_quit())
    
    Gtk.main()
    

    【讨论】:

      【解决方案2】:

      GTK2 中的相同示例,受您的代码启发:

      import pygtk
      pygtk.require('2.0')
      import gtk
      import gtk.gdk
      import gobject
      import gc
      
      store = gtk.ListStore(str, gtk.gdk.Pixbuf) 
      
      pb = gtk.gdk.pixbuf_new_from_file("picture.png")
      store.append(["Test", pb])
      
      combo = gtk.ComboBox(store)
      
      renderer = gtk.CellRendererText()
      combo.pack_start(renderer, True)
      combo.add_attribute(renderer, "text", 0)
      
      renderer = gtk.CellRendererPixbuf()
      combo.pack_start(renderer, False)
      combo.add_attribute(renderer, "pixbuf", 1)
      
      window = gtk.Window(gtk.WINDOW_TOPLEVEL)
      window.add(combo)
      window.show_all()
      
      window.connect('delete-event', lambda w, e: gtk.main_quit())
      
      gtk.main()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-19
        • 1970-01-01
        • 2019-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多