簡易Webブラウザ
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検索機能付き。
GUIもwxPythonでささっと書けるし、Windows、Linuxとも相性良し。Python万歳。