Skip to content

Instantly share code, notes, and snippets.

@ryesalvador
Last active November 17, 2021 02:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ryesalvador/f5973292913940fc80cd to your computer and use it in GitHub Desktop.
Save ryesalvador/f5973292913940fc80cd to your computer and use it in GitHub Desktop.
Python + PyGTK + WebKit + Raspberry Pi
# pizilla-pygtk.py
import gtk, webkit
class window(gtk.Window):
def __init__(self):
super(window, self).__init__()
self.set_title("Pizilla-PyGTK")
self.set_size_request(583, 400)
try:
self.set_icon_from_file("/etc/alternatives/desktop-background")
except Exception, e:
print e.message
sys.exit(1)
self.text = gtk.Entry()
self.progress = gtk.ProgressBar()
go = gtk.Button("Go!")
go.connect("clicked", self.goclicked)
refresh = gtk.Button(stock = gtk.STOCK_REFRESH)
refresh.connect("clicked", self.refresh_clicked)
self.browser = webkit.WebView()
self.browser.connect("title-changed", self.title_changed)
self.browser.connect("load-progress-changed", self.load_progress_changed)
self.browser.connect("load-started", self.load_started)
self.browser.connect("load-finished", self.load_finished)
scroller = gtk.ScrolledWindow()
scroller.add(self.browser)
hbox = gtk.HBox()
hbox.pack_start(self.text)
hbox.pack_start(go, False)
hbox.pack_start(refresh, False)
vbox = gtk.VBox()
vbox.pack_start(hbox, False)
vbox.pack_start(scroller)
vbox.pack_start(self.progress, False)
self.add(vbox)
self.connect("destroy", gtk.main_quit)
self.show_all()
def goclicked(self, btn):
url = self.text.get_text()
if url.startswith("http://"):
self.browser.open(url)
elif url.startswith("https://"):
self.browser.open(url)
else:
url = "http://" + url
self.browser.open(url)
def title_changed(self, webview, frame, title):
self.set_title(title)
def load_progress_changed(self, webview, amount):
self.progress.set_fraction(amount/100.0)
def load_started(self, webview, frame):
self.progress.set_child_visible(True)
def load_finished(self, webview, frame):
self.progress.set_child_visible(False)
def refresh_clicked(self, btn):
self.browser.reload()
if __name__ == '__main__':
window()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment