Python 为什么悬停动画会忽略Gtk3中的过渡时间和功能?
使用新的gtk,可以用css之类的文件创建图形主题 给定此css文件(名为Python 为什么悬停动画会忽略Gtk3中的过渡时间和功能?,python,css,animation,gtk,gtk3,Python,Css,Animation,Gtk,Gtk3,使用新的gtk,可以用css之类的文件创建图形主题 给定此css文件(名为my gtk widgets.css): 以及以下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)
my gtk widgets.css
):
以及以下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默认的环境
)?或者我的css文件中有什么错误
python版本:2.7.2+
gtk版本:3.0
编辑:该示例是一个修改版本的将转换置于
上。按钮
而不是。按钮:悬停
我不是css专家,但似乎您试图在无法应用转换/动画的属性上应用转换(从它看来,边界半径上的转换
不受支持)您可以尝试使用类似于背景色的方法来查看应用程序中按钮的过渡效果(可以看到颜色变化过渡-Gtk-3.0、python-2.7.1、FC15)
希望这有帮助 这既不起作用,也不会像示例中应该做的那样,因为我可能希望其他事件有不同的转换。它确实会影响行为。真正的解决方案实际上是将可设置动画的属性放入css语句中,如下所示:transition:border radius 3000ms linear代码>当然,当您有供应商前缀时,此属性可能会有所不同。@MatthewGreen:您看到我问过gtk吗?这与html、mozilla、webkit和其他无关。这是关于gtk工具包的。我贴的例子是。谢谢你的回答。但是,这也不起作用:当背景过渡时间相应地改变时,背景颜色不会被拾取(例如边框颜色、填充顶部等等)。因此,我最初的问题仍然是:我必须改变什么才能让它起作用?css似乎不是主要问题。你是说按钮的背景色没有改变吗?嗯,正如我在回复中提到的,我在发帖前确实检查过。它确实改变了。嗯,顺便说一句,我在LXDE环境中试过了&不是GNOME。我现在没有访问GTK+3的权限,也许我会尝试在GNOMEI上检查它,这意味着氛围主题确实有一个改变背景颜色的悬停效果。这一变化受到css中过渡时间值的影响,但css中的两个颜色值对按钮的外观没有任何影响。这可能也是因为主题。不过我不太确定。您可能知道,有一个默认的.css文件,如果主题有.css文件,则可以从中选择主题元素。也许你可以尝试一个不同的主题也许是Clearlooks?
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()
.button {
background-color: #00ffff;
border-style: solid;
}
.button:hover {
transition: 1s linear;
background-color: #00ff00;
}