如何使用 Python 中用 Vala 编写的自定义 GTK 小部件?
Posted
技术标签:
【中文标题】如何使用 Python 中用 Vala 编写的自定义 GTK 小部件?【英文标题】:How to use a custom GTK widget written in Vala from Python? 【发布时间】:2020-01-30 13:49:12 【问题描述】:最近我设法通过以下命令从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.0
2: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 代码是什么,您是否在控制台上遇到错误? @AlThomas 你好! pastebin.com/HVGQEYHy 我在控制台中没有收到任何错误。 你需要像这样运行它:GI_TYPELIB_PATH=. LD_LIBRARY_PATH=. python3 file.py
.U 可以通过制作共享库来测试它。你可以从字面上下载 Vala 文件并使用相同的
【参考方案1】:
在您完成了编译对象和生成接口文件以在 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
的屏幕截图:
【讨论】:
您好!我很感激帮助。可悲的是,我不再需要该解决方案,但这可能对其他人有所帮助。我没有更改百分比的原因是因为我不知道该怎么做,而且窗口有点小故障。以上是关于如何使用 Python 中用 Vala 编写的自定义 GTK 小部件?的主要内容,如果未能解决你的问题,请参考以下文章