WebKit バインドは PyObjC に含まれている。
Fedora の gir には WebKit2 が含まれている。
もしかしたら共通コードでイケるんでね?
#!/usr/bin/env python3 import objc from AppKit import * from WebKit import * class WView(WKWebView): def init(self): config = WKWebViewConfiguration.new() objc.super(WView, self).initWithFrame_configuration_(NSZeroRect, config) return self class Win(NSWindow): def init(self): frame = NSMakeRect(100, 400, 900, 600) objc.super(Win, self).initWithContentRect_styleMask_backing_defer_( frame, NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask | NSMiniaturizableWindowMask, NSBackingStoreBuffered, False) self.setTitle_('Web') self.setDelegate_(self) # view self.webview = WView.new() self.webview.setFrameSize_(self.contentView().frame().size) self.contentView().addSubview_(self.webview) # url url = NSURL.URLWithString_('https://www.google.com/') req = NSURLRequest.requestWithURL_(url) self.webview.loadRequest_(req) return self def windowDidResize_(self, sender): self.webview.setFrameSize_(self.contentView().frame().size) class Menu(NSMenu): def init(self): objc.super(Menu, self).init() item_app = NSMenuItem.new() self.addItem_(item_app) menu_app = NSMenu.new() item_app.setSubmenu_(menu_app) item_quit = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_('Quit', 'terminate:', 'q') menu_app.addItem_(item_quit) return self NSApplication.sharedApplication() window = Win.new() window.makeKeyAndOrderFront_(window) NSApp.setMainMenu_(Menu.new()) NSApp.activateIgnoringOtherApps_(True) NSApp.run()
PyObjC
#!/usr/bin/env python3 import sys, gi gi.require_version('Gtk', '3.0') gi.require_version('WebKit2', '4.0') from gi.repository import Gtk, GLib, WebKit2 class WebView(WebKit2.WebView): def __init__(self, ctx): WebKit2.WebView.__init__(self, web_context=ctx) class Win(Gtk.ApplicationWindow): def __init__(self, app): Gtk.ApplicationWindow.__init__(self, application=app) # ctx = WebKit2.WebContext() self.webkit = WebView(ctx) self.add(self.webkit) self.webkit.load_uri('https://www.google.com/') # self.resize(900, 600) self.show_all() class App(Gtk.Application): __gtype_name__ = 'App' def __init__(self): GLib.set_prgname('App') Gtk.Application.__init__(self) def do_startup(self): Gtk.Application.do_startup(self) Win(self) def do_activate(self): self.props.active_window.present() App().run(sys.argv)
PyGObject
全然違ったwwwww
Apple さん、なんで URL は文字列じゃダメなの?
GNOME さん、WebKit2.WebView() ではエラーになるんですけど?
実は我がアプリに本棚機能を付けようかと考えて。
WebKit からローカル HTML でやれば GNOME, macOS 共通にできるかなって。
こりゃ無理だ。