簡易Webブラウザ

LaclefYoshi2005-02-13

Pythonで。

import sys
import webbrowser
import wx
import wx.lib.iewin as iewin
url="about:blank"
class BrowsPanel(wx.Panel) :
 def __init__(self,parent,id) :
  wx.Panel.__init__(self,parent,-1)
  sizer=wx.BoxSizer(wx.VERTICAL)
  urlsizer=wx.BoxSizer(wx.HORIZONTAL)
  urltxt=wx.StaticText(self,-1,"URL:")
  urlsizer.Add(urltxt,0,wx.CENTER|wx.ALL)
  self.urlbox=wx.TextCtrl(self,-1,url)
  urlsizer.Add(self.urlbox,1,wx.EXPAND|wx.TOP|wx.BOTTOM,4)
  opbtn=wx.Button(self,-1,"OPEN",style=wx.BU_EXACTFIT)
  self.Bind(wx.EVT_BUTTON,self.OnOpenButton,opbtn)
  urlsizer.Add(opbtn,0,wx.EXPAND|wx.TOP|wx.BOTTOM,2)
  stdbtn=wx.Button(self,-1,"STD",style=wx.BU_EXACTFIT)
  self.Bind(wx.EVT_BUTTON,self.OnStdOpenButton,stdbtn)
  urlsizer.Add(stdbtn,0,wx.EXPAND|wx.TOP|wx.BOTTOM|wx.RIGHT,2)
  prebtn=wx.Button(self,-1,"<-",style=wx.BU_EXACTFIT)
  self.Bind(wx.EVT_BUTTON,self.OnPrevPageButton,prebtn)
  urlsizer.Add(prebtn,0,wx.EXPAND|wx.TOP|wx.BOTTOM,2)
  nextbtn=wx.Button(self,-1,"->",style=wx.BU_EXACTFIT)
  self.Bind(wx.EVT_BUTTON,self.OnNextPageButton,nextbtn)
  urlsizer.Add(nextbtn,0,wx.EXPAND|wx.TOP|wx.BOTTOM,2)
  stpbtn=wx.Button(self,-1,"X",style=wx.BU_EXACTFIT)
  self.Bind(wx.EVT_BUTTON,self.OnStopButton,stpbtn)
  urlsizer.Add(stpbtn,0,wx.EXPAND|wx.TOP|wx.BOTTOM,2)
  refbtn=wx.Button(self,-1,"@",style=wx.BU_EXACTFIT)
  self.Bind(wx.EVT_BUTTON,self.OnRefreshPageButton,refbtn)
  urlsizer.Add(refbtn,0,wx.EXPAND|wx.TOP|wx.BOTTOM,2)
  self.searchbox=wx.TextCtrl(self,-1)
  urlsizer.Add(self.searchbox,1,wx.EXPAND|wx.TOP|wx.BOTTOM|wx.LEFT,4)
  searchbtn=wx.Button(self,0,"SEARCH",style=wx.BU_EXACTFIT)
  self.Bind(wx.EVT_BUTTON,self.OnSearchButton,searchbtn)
  urlsizer.Add(searchbtn,0,wx.EXPAND|wx.TOP|wx.BOTTOM,2)
  sizer.Add(urlsizer,0,wx.EXPAND)
  self.iepanel=iewin.IEHtmlWindow(self,-1,style=wx.NO_FULL_REPAINT_ON_RESIZE)
  self.iepanel.LoadUrl(url)
  self.Bind(iewin.EVT_DocumentComplete,self.OnDocumentComplete,self.iepanel)
  sizer.Add(self.iepanel,1,wx.EXPAND|wx.ALL)
  self.stbar=wx.StatusBar(self,-1)
  self.Bind(iewin.EVT_StatusTextChange,self.OnStatusTextChange,self.iepanel)
  sizer.Add(self.stbar,0,wx.EXPAND)
  self.SetSizer(sizer)
  self.SetAutoLayout(True)
 def OnOpenButton(self,event) :
  newurl=self.urlbox.GetValue()
  self.iepanel.Navigate(newurl)
 def OnStdOpenButton(self,event) :
  newurl=self.urlbox.GetValue()
  webbrowser.open_new(newurl)
 def OnPrevPageButton(self,event) :
  self.iepanel.GoBack()
 def OnNextPageButton(self,event) :
  self.iepanel.GoForward()
 def OnDocumentComplete(self,event) :
  self.urlbox.SetValue(event.URL)
 def OnStopButton(self,event) :
  self.iepanel.Stop()
 def OnRefreshPageButton(self,event) :
  self.iepanel.Refresh(iewin.REFRESH_COMPLETELY)
 def OnSearchButton(self,event) :
  searchstr=self.searchbox.GetValue()
  searchurl="http://www.google.com/search?hl=ja&lr=lang_ja&ie=Shift_JIS&oe=Shift_JIS&q="
  self.iepanel.Navigate(searchurl+searchstr)
 def OnStatusTextChange(self,event):
  self.stbar.SetStatusText(event.Text)
class BrowsApp(wx.App) :
 def OnInit(self) :
  frame=wx.Frame(None,1,"MiniBrowser",(-1,-1),(600,400))
  BrowsPanel(frame,-1)
  self.SetTopWindow(frame)
  frame.Show()
  frame.Fit()
  return True
if __name__=='__main__' :
 if wx.Platform=='__WXMSW__' :
  if len(sys.argv)>1 :
   url=sys.argv[1]
  app=BrowsApp()
  app.MainLoop()
 else :
  print "Sorry Windows Only"

某所で使わなくなったので公開。コマンドラインでURLを渡すとそのURLを、渡さないと空ページを開いて起動。
STDボタンは、使用パソコンの「標準のブラウザ」でURLを開く。オマケでGoogleJapan検索機能付き。
GUIwxPythonでささっと書けるし、WindowsLinuxとも相性良し。Python万歳。