2016-07-26 6 views
6

Ben (pencere sarılmış) görüşümü oluşturulan ve böyle bir URL yüklemiş: Gtk 3.0 ve WebKit2 4.0 ile Python'daki Bağlantılarda tıklamalar nasıl yapılır?

self.web_view = WebKit2.WebView() 
self.web_view.load_uri("https://en.wikipedia.org") 

Benim "Mini Tarayıcı" başlar

Şimdi yerel bağlantılar (JavaScript olaylar veya bağlanmıştır linklere tıklayabilirsiniz aynı alandaki diğer sayfalara bağlantılar. Ancak bağlantılar başka alanlara işaret ettiğinde hiçbir şey olmaz. Dış bağlantılardaki tıklamaları nasıl yakalarım? Veya bu bağlantıları sistem varsayılan tarayıcısında nasıl açabilirim?

GÜNCELLEME: Çapraz site bağlantıları "Mini Tarayıcı" tarafından ele alınmamaktadır. "Mini-Tarayıcısını" kesmek ve özel mantığa göre hareket etmek için bir olay kanca (onclick) yazabilirim veya siteler arası bağlantıları yapılandırmanın bir yolu var mı?

+0

Varsayılan webkit kullanıyor musunuz? Orada gtk için bir python tabanlı webkit var: [pywebkitgtk] (https://code.google.com/archive/p/pywebkitgtk), muhtemelen varsayılan python-webkit2'den daha iyi çalışıyor. [İşte] (https://stackoverflow.com/questions/647041/need-a-simple-hello-world-example-using-the-webkit-library-in-python) bazı kullanım örnek – Alex

+0

İşte bir örnek https://gist.github.com/kklimonda/890640#file-pybrowser-py) 'in bir python tarayıcısından (gtps ve webkit) kullandığı, bir denemeye başladım,' https: // en.wikipedia.org' benim için çalışıyor. Temelde sizin yaptığınız gibi aynı aramalar kullanılır .. siz de Gtk.VBox'tan miras kaldınız? – Alex

+1

@Alex Örnek, eski gtk ve webkit sürümüne dayanmaktadır :-( – Witek

cevap

2

GtkLinkButton kullandınız mı? bağlantıları açmak için varsayılan tarayıcısı kullanan gtk-show-uri ait dokümana göre, ayrıca bu tür http:// ya da sadece böyle GVFS yükleyebilirsiniz debian tabanlı dağılımlar için

ftp:// olarak uri düzenleri için destek almak üzere gvfs yüklemeniz gerekir:

sudo apt-get install gvfs gvfs-backends gvfs-fuse

bu işe yaramazsa, sen ayrıca bunun gibi, özel tarayıcılar için YANLIŞ

döndüren durumunda, gtk_show_uri hata-mesajı kontrol edebilirsiniz Sizinki, GtkLinkButton belgesine göre, activate-link signal'a bağlanmanız ve işleyiciden doğru bir şekilde geri dönmeniz gerekiyor ... Muhtemelen bunu zaten yaptınız.

+0

GtkLinkButton'u python'dan nasıl kullanacağınız konusunda herhangi bir belge var mı? – Witek

+0

[Burada resmi gtk python belgesi] (https://developer.gnome.org/pygtk/stable/class-gtklinkbutton.html) link düğmesi ve [burada] (http: // python-gtk-3 -tutorial.readthedocs.io/en/latest/button_widgets.html), bağlantı düğmesi için python-snippet'lerini de sağlayan bir öğreticidir. – Alex

+0

Şimdi anlayamıyorum. LinkButton'u ne için kullanırım? Çalışmak için WebView'imde bağlantılara ihtiyacım var ... – Witek

0

GtkLinkButton yanıtı, GtkLinkButton ile hiçbir ilgisi yok ve WebKit bağlantıları yüklemek için gvfs kullanmaz, çünkü gerçekten bu işareti kapalıdır.

Neden etki alanları arası bağlantıların sizin için çalışmadığını bilmiyorum. Varsayılan olarak çalışmalılar. Bu davranışı WebKitWebView::decide-policy sinyalini kullanarak denetleyebilirsiniz, ancak varsayılan ilkesi bağlantıyı açmak olmalıdır.

Yorumunuzda, _blank hedefleriyle bağlantı sorunu yaşadığınızı belirttiniz. Bunların test ettiğin tek çapraz alan bağlantıları olması mümkün mü? Bu sorun basittir: WebKit sizin için otomatik olarak yeni pencereler açamaz, bunun için kod yazmanız gerekir. Neyse ki oldukça kolay: WebKitWebView::create'a bağlanın ve oradaki belgeleri izleyin. Temel olarak yeni bir GtkWindow oluşturmalısınız, ile ilgili WebKitWebView oluşturun, yeni görünümü pencereye yerleştirin, yeni görünümde WebKitWebView::ready-to-show'a bağlanın ve bu sinyal yayıldığında pencereyi gösterin.