为什么悬停动画会忽略Gtk3中的过渡时间和功能?

时间:2012-01-11 16:04:18

标签: python css animation gtk gtk3

使用新的gtk,可以使用css之类的文件创建图形主题。

鉴于此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()

运行此代码会产生一个按钮,用于在悬停时更改边框半径。但过渡是即时的,而不是动画。

enter image description here

enter image description here

这是什么原因?我需要不同版本的gtk,python,......?或者这个动画是否依赖于gtk主题(在我的情况下是Ubuntu默认Ambience)?或者我的css文件中有什么问题?

python版本:2.7.2 +

gtk版本:3.0

编辑:该示例是this

的修改版本

2 个答案:

答案 0 :(得分:6)

我不是css的专家,但您似乎正在尝试对无法应用转换/动画的属性应用转换(从this list起,它似乎不支持border-radius上的转换你可以尝试类似background-color的东西来看你应用程序中按钮的过渡效果(可以看到颜色变化过渡 - Gtk-3.0,python-2.7.1,FC15)

.button {
    background-color: #00ffff;
    border-style: solid;
}

.button:hover {
    transition: 1s linear;
    background-color: #00ff00;
}

希望这有帮助!

答案 1 :(得分:-1)

将转换置于.button而非.button:hover