Почему анимация при наведении мыши игнорирует время перехода и функцию в Gtk3? - PullRequest
4 голосов
/ 11 января 2012

С новым 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

РЕДАКТИРОВАТЬ: пример представляет собой модифицированную версию это

Ответы [ 2 ]

6 голосов
/ 18 января 2012

Я не эксперт в css, но, похоже, вы пытаетесь применить переход к свойству, к которому нельзя применить переход / анимацию (из из этого списка кажется, что переход по 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;
}

Надеюсь, это поможет!

0 голосов
/ 11 января 2012

Поставить переход на .button, а не .button:hover

...