Вопрос : gtk-builder-error-quark: неверный тип объекта 'WebKitWebView'
Кажется, это scope and namespace
проблема, которая Gtk.Builder
не могу решить.
Нашел это простое решение, чтобы ввести требуемые классы WebKit2.WebView
и WebKit2.Settings
в модуль namespace
.
Примечание: Вам не нужно ничего менять в Glade
, размещать WebKit2
объекты как обычно .
Изменить import
от
from gi.repository import WebKit2 as Webkit
до
from gi.repository.WebKit2 import WebView, Settings
Если вы не хотите определять используемые классы один за другим , рассмотрим это по запросу решение.
import gi
gi.require_version('WebKit2', '4.0')
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import WebKit2 as Webkit
class GtkBuilder(Gtk.Builder):
def do_get_type_from_name(self, type_name):
"""
Looks up a type by name, using the virtual function that Gtk.Builder
has for that purpose.
Parameters: type_name (str) – type name to lookup
Returns: the GObject.GType found for type_name
or GObject.TYPE_INVALID if no type was found
Return type: GObject.GType
"""
if type_name.startswith('WebKit'):
getattr(Webkit, type_name[6:])
r = Gtk.Builder.do_get_type_from_name(self, type_name)
print('GtkBuilder: => {}\t{}'.format(type_name, r))
return r
Выход :
GtkBuilder: => WebKitSettings <GType WebKitSettings (4168054944)>
GtkBuilder: => GtkWindow <GType GtkWindow (4167639152)>
GtkBuilder: => GtkBox <GType GtkBox (4167624432)>
GtkBuilder: => GtkEntry <GType GtkEntry (4168904384)>
GtkBuilder: => WebKitWebView <GType WebKitWebView (4168054192)>
Протестировано с Python: 3,5 - ги .__ версия__: 3.22.0 - Поляна 3,22,1