2012-01-11 37 views
4

使用新的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() 

運行這段代碼給出了一個按鈕懸停時改變邊界半徑。但過渡是即時的,而不是動畫。

enter image description here

enter image description here

,這是什麼原因呢?我需要不同版本的gtk,python ...嗎?或者這個動畫依賴於gtk主題(在我的情況下是Ubuntu默認Ambience)?或者我的css文件有問題嗎?

Python版本:2.7.2+

GTK版本:3.0

編輯:例子是this

回答

-1

修改後的版本放在.button.button:hover

+0

這既不起作用,也不會像示例*應該*那樣做,因爲我可能需要其他事件的不同轉換。 – xubuntix 2012-01-11 16:20:12

+0

它確實會影響行爲。真正的解決方案實際上是將動畫屬性放入css語句中,如下所示: 'transition:border-radius 3000ms linear;' 當然,如果您有供應商前綴,則此屬性可能會有所不同。 – Marco 2012-01-11 16:21:52

+0

@MatthewGreen:你看到我問過gtk了嗎?這與html,mozilla,webkit等無關。它關於gtk工具包。我發佈的例子是[從這裏修改](http://gnomejournal.org/article/107/styling-gtk-with-css)。 – xubuntix 2012-01-11 16:32:31

6

我的過渡沒有專家在CSS中,但它似乎是您嘗試應用過渡屬性上的轉換/動畫無法應用(從this list它出現過渡border-radius不支持),您可以嘗試像background-color看到你的應用程序中的按鈕,切換效果(變色轉變可以看出 - GTK的3.0,蟒蛇-2.7.1,FC15)

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

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

希望這有助於!

+0

謝謝你的答案。然而,這種情況並不奏效:當背景轉換時間相應地改變時,背景顏色不會被拾取(例如,邊框顏色,填充頂部,...)。所以我原來的問題仍然存在:爲了讓這個工作起作用,我需要做些什麼?看來,CSS不是主要問題。 – xubuntix 2012-01-20 08:21:00

+0

你的意思是按鈕的背景顏色沒有改變?那麼在發佈之前,我確實檢查了它,正如我在回覆中提到的那樣。它確實改變了。嗯順便說一句我在LXDE環境中嘗試它,而不是GNOME。我現在無法訪問GTK + 3,也許我會嘗試在GNOME上檢查它 – 2012-01-20 08:41:12

+0

我的意思是氛圍主題確實具有改變背景顏色的懸停效果。這個變化受到了CSS中的過渡時間值的影響,但是這兩個css中的顏色值對按鈕的出現沒有任何影響。 – xubuntix 2012-01-20 08:46:53