【发布时间】:2011-11-07 08:13:26
【问题描述】:
我正在使用 python 并希望在混乱阶段嵌入 gtk3 小部件。但是,pyclutter-gtk 和 pyclutter-gsk 似乎已经停止了一段时间。我们可以在 python 中使用任何替代绑定吗? 我试过谷歌但没有运气。只有一个项目 (http://code.google.com/p/pyclutter-widgets/) 看起来很有趣,但它已经闲置了一年......
【问题讨论】:
我正在使用 python 并希望在混乱阶段嵌入 gtk3 小部件。但是,pyclutter-gtk 和 pyclutter-gsk 似乎已经停止了一段时间。我们可以在 python 中使用任何替代绑定吗? 我试过谷歌但没有运气。只有一个项目 (http://code.google.com/p/pyclutter-widgets/) 看起来很有趣,但它已经闲置了一年......
【问题讨论】:
gtk3 和 clutter 的所有 python 绑定都已移至基于自省的 pygobject;您应该能够使用 pygobject >= 2.30 中的 Clutter-Gtk 和 Clutter-Gst,只需执行以下操作:
from gi.repository import GtkClutter
您可以关注Gnome wiki entry for IntrospectionPorting 上的文档。
【讨论】:
以下是使用 Clutter-gtk 1.2.x 和 python-3.x 将 GtkClutter 舞台和 scrollActor 添加到 Gtk.HBox 的方法
from gi.repository import Gtk, Gdk, GtkClutter, Clutter
class EmbeddedGtkClutterStageWithScrollActor(Gtk.Window):
def __init__(self):
super(EmbeddedGtkClutterStage, self).__init__()
# Initialise GtkClutter
GtkClutter.init(sys.argv)
self.connect('destroy', lambda w: Gtk.main_quit())
self.set_default_size(1024, 768)
self.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0, 0, 0, 1))
display = Gdk.Display.get_default()
screen = display.get_default_screen()
css_provider = Gtk.CssProvider()
css_provider.load_from_path('style.css')
context = Gtk.StyleContext()
context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
hbox = Gtk.HBox(False, 2)
vbox.add(hbox)
# Create Clutter Stage
embed = GtkClutter.Embed()
hbox.add(embed)
embed.set_size_request(900, 500)
stage = embed.get_stage()
# set stage color to black
stage.set_color(Clutter.Color.new(0, 0, 0, 255))
# Create a Scrollable Actor and add to the Stage
scrollActor = Clutter.ScrollActor()
scrollActor.set_scroll_mode(Clutter.ScrollMode.HORIZONTALLY)
stage.add_actor(scrollActor)
# scroll the scrollActor to x/y coords
point = Clutter.Point()
point.x = 50
point.y = 100
scrollActor.scroll_to_point(point)
hbox.show_all()
EmbeddedGtkClutterStageWithScrollActor()
Gtk.main()
【讨论】: