使用新的gtk,可以使用類似css的文件創建圖形主題。爲什麼懸停動畫會忽略Gtk3中的轉換時間和函數?
鑑於這種CSS文件(名爲my-gtk-widgets.css
):
.button {
border-radius: 0;
border-style: solid;
}
.button:hover {
transition: 3000ms linear;
border-radius: 50;
}
而下面的Python代碼:
from gi.repository import Gtk
from gi.repository import Gdk
def _destroy_cb(widget, data=None):
Gtk.main_quit()
window = Gtk.Window()
window.connect("destroy", _destroy_cb)
screen = Gdk.Screen.get_default()
css_provider = Gtk.CssProvider()
css_provider.load_from_path('my-gtk-widgets.css')
context = Gtk.StyleContext()
context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER)
box = Gtk.VBox()
window.add(box)
button = Gtk.Button('go-next')
box.pack_start(button, False, False, 0)
window.show_all()
Gtk.main()
運行這段代碼給出了一個按鈕懸停時改變邊界半徑。但過渡是即時的,而不是動畫。
,這是什麼原因呢?我需要不同版本的gtk,python ...嗎?或者這個動畫依賴於gtk主題(在我的情況下是Ubuntu默認Ambience
)?或者我的css文件有問題嗎?
Python版本:2.7.2+
GTK版本:3.0
編輯:例子是this
這既不起作用,也不會像示例*應該*那樣做,因爲我可能需要其他事件的不同轉換。 – xubuntix 2012-01-11 16:20:12
它確實會影響行爲。真正的解決方案實際上是將動畫屬性放入css語句中,如下所示: 'transition:border-radius 3000ms linear;' 當然,如果您有供應商前綴,則此屬性可能會有所不同。 – Marco 2012-01-11 16:21:52
@MatthewGreen:你看到我問過gtk了嗎?這與html,mozilla,webkit等無關。它關於gtk工具包。我發佈的例子是[從這裏修改](http://gnomejournal.org/article/107/styling-gtk-with-css)。 – xubuntix 2012-01-11 16:32:31