小编xub*_*tix的帖子

对pygtk3的反思可能吗?

python的一大优点是能够对方法和函数进行内省.举个例子,要获得函数签名,math.log你可以(在ipython中)运行:

In [1]: math.log?
Type:       builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form:    <built-in function log>
Namespace:  Interactive
Docstring:
    log(x[, base])

    Return the logarithm of x to the given base.
    If the base not specified, returns the natural logarithm (base e) of x.
Run Code Online (Sandbox Code Playgroud)

并查看该功能的参数x和可选项base.

使用新的gtk3和自动生成的pygobject绑定,我可以在所有示例中尝试只获取(*args, **kwargs)每个gtk方法的参数.

示例:Label.set_text 需要一个字符串:

In [1]: from gi.repository import Gtk
In [2]: mylabel = Gtk.Label("hello")
In [3]: mylabel.set_text?
Type:       instancemethod
Base Class: <type 'instancemethod'>
String Form: …
Run Code Online (Sandbox Code Playgroud)

python pygtk pygobject gtk3

8
推荐指数
1
解决办法
949
查看次数

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

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

给定这个css文件(命名my-gtk-widgets.css):

.button {
    border-radius: 0;
    border-style: solid;
}

.button:hover {
    transition: 3000ms linear;
    border-radius: 50;
}
Run Code Online (Sandbox Code Playgroud)

以下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()
Run Code Online (Sandbox Code Playgroud)

运行此代码会提供一个按钮,可在悬停时更改边框半径.但过渡是即时的,而不是动画.

在此输入图像描述

在此输入图像描述

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

python版本:2.7.2+

gtk版本:3.0

编辑:该示例是修改后的版本

css python gtk animation gtk3

4
推荐指数
1
解决办法
1355
查看次数

标签 统计

gtk3 ×2

python ×2

animation ×1

css ×1

gtk ×1

pygobject ×1

pygtk ×1