如何使用从Python用Vala编写的自定义GTK小部件?

问题描述 投票:0回答:1

最近,我设法通过以下命令从this Vala文件中创建了一个可以使用的共享库:1:valac circular-progress-bar.vala -X -fPIC -X -shared -o test_shared.so --library=testShared --gir testShared-0.1.gir --pkg gtk+-3.02:g-ir-compiler --shared-library=test_shared.so --output=testShared-0.1.typelib testShared-0.1.gir

我在python中创建了一个简单的测试窗口,其中显示了小部件,并且仅显示了文本。是Python还是根本无法以这种方式使用?Image of the test window/app我试图找到功能来更改设置或某些值,但我找不到它。

我将不胜感激!

python-3.x gtk3 vala
1个回答
0
投票

在经历了编译对象和生成接口文件以使用Python中的小部件的艰难技术步骤之后,这个答案可能会有些令人震惊。据我所知没有显示圆的原因是因为该值为0%-所以没有圆!

小部件具有percentage属性,可以在Python中使用pb.props.percentage进行设置。在此示例中,该百分比设置为60%,对我来说效果很好。我使用pb.props.percentage = 0.6

import gi

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk, GObject

gi.require_version('testShared', '0.1')
from gi.repository import testShared


class GUI (Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        pb = testShared.CircularProgressBar()
        pb.props.percentage = 0.6
        self.connect('destroy', self.on_window_destroy)
        self.add(pb)
        self.show_all()
        Gtk.main()

    def on_window_destroy(self, window):
        Gtk.main_quit()

if __name__ == "__main__":
    GUI()

小部件具有其他可以更改的属性,例如line_width设置绘制圆的线的宽度。

这里是显示60%且line_width设置为10的屏幕截图:

CircularProgressBar widget showing 60%

© www.soinside.com 2019 - 2024. All rights reserved.