Как использовать собственный виджет GTK, написанный на Vala от Python? - PullRequest
0 голосов
/ 30 января 2020

Недавно мне удалось создать общую библиотеку, которую я мог бы использовать из этого файла 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 или его просто нельзя использовать таким образом? Изображение тестового окна / приложения
Я пытался найти функцию, чтобы изменить настройки или какое-то значение, но я не могу его найти.

Буду признателен за любую помощь!

1 Ответ

0 голосов
/ 04 апреля 2020

После того, как вы прошли сложные технические этапы компиляции объекта и создания файлов интерфейса для использования виджета в Python, этот ответ может быть шоком. Насколько я могу судить, причина, по которой кружок не отображается, заключается в том, что значение равно 0%, поэтому кружка нет!

Виджет имеет свойство percentage, и его можно установить в Python с помощью * 1004. *. В этом примере процент установлен на 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 устанавливает ширину линии, по которой dr aws окружность.

Здесь это скриншот, показывающий 60% и значение line_width, установленное на 10:

CircularProgressBar widget showing 60%

...