• 11550阅读
  • 10回复

一个简易浏览器 [复制链接]

上一主题 下一主题
离线wkaiken
 

图酷模式  只看楼主 倒序阅读 楼主  发表于: 2011-06-29
— 本帖被 XChinux 从 Additional Language Bindings for Qt 移动到本区(2013-02-14) —
    代码如下:
  1. #-*- coding:utf-8 -*-
  2. # author:joyo
  3. # make: 2011/6/29
  4. import sys
  5. from PyQt4.QtCore import *
  6. from PyQt4.QtGui import *
  7. from PyQt4.QtWebKit import *
  8. QTextCodec.setCodecForTr(QTextCodec.codecForName("UTF-8"))
  9. class browserWindow(QWidget):
  10.     def __init__(self,parent =None):
  11.         self.ZoomStepSize=10
  12.         super(browserWindow,self).__init__(parent)
  13.         
  14.         self.setWindowTitle(self.tr("简易浏览器"))
  15.         self.setWindowFlags(Qt.WindowStaysOnTopHint)
  16.         self.webView =QWebView()
  17.         self.webView.settings().setAttribute(QWebSettings.PluginsEnabled, True)#支持插件
  18.         self.webView.settings().setAttribute(QWebSettings.JavaEnabled, True)#支持Java
  19.         self.webView.settings().setAttribute(QWebSettings.JavascriptEnabled, True)#支持Javascript
  20.         self.webView.settings().setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
  21.         self.webView.settings().setAttribute(QWebSettings.PrivateBrowsingEnabled,True)        
  22.         self.webView.settings().setAttribute(QWebSettings.AutoLoadImages,True)
  23.         self.webView.page().setLinkDelegationPolicy(QWebPage.DelegateAllLinks)
  24.         self.webView.load(QUrl("http://www.baidu.com"))
  25.         self.createActions()
  26.         self.createToolBar()
  27.         self.createLayout()
  28.         self.createConnections()
  29.         self.setMouseTracking(True)
  30.                 
  31.     def createActions(self):
  32.         self.homePageAction = QAction(QIcon("images/home.png"),
  33.                                       self.tr("主页"),self)
  34.         self.zoomOutAction = QAction(QIcon("images/zoomout.png"),
  35.                                      self.tr("放大"),self)
  36.         self.zoomOutAction.setShortcut(QKeySequence.ZoomOut)
  37.         self.zoomInAction = QAction(QIcon("images/zoomin.png"),
  38.                                     self.tr("缩小"),self)
  39.         self.zoomInAction.setShortcut(QKeySequence.ZoomIn)
  40.         
  41.         self.zoomFixAction =QAction(QIcon("images/zoomFix.png"),self.tr("实际大小"),self)
  42.         
  43.         
  44.         self.setUrlAction=QAction(QIcon("images/seturl.png"),
  45.                                   self.tr("设置网址..."),self)
  46.         self.setUrlAction.setShortcut(QKeySequence("F2"))
  47.         
  48.     def createToolBar(self):
  49.         self.toolBar = QToolBar(self.tr("导航"))
  50.         self.toolBar.setToolButtonStyle(Qt.ToolButtonIconOnly)
  51.         self.toolBar.addAction(self.webView.pageAction(QWebPage.Back))
  52.         
  53.         self.toolBar.addAction(self.webView.pageAction(QWebPage.Forward))
  54.         self.toolBar.addAction(self.homePageAction)
  55.         self.toolBar.addAction(self.webView.pageAction(QWebPage.Reload))
  56.         self.toolBar.addAction(self.webView.pageAction(QWebPage.Stop))
  57.         self.toolBar.addSeparator()
  58.         self.toolBar.addAction(self.zoomOutAction)
  59.         self.toolBar.addAction(self.zoomInAction)
  60.         self.toolBar.addAction(self.zoomFixAction)
  61.         self.zoomSpinBox=QSpinBox()
  62.         self.zoomSpinBox.setSingleStep(self.ZoomStepSize)
  63.         self.zoomSpinBox.setRange(25,250)
  64.         self.zoomSpinBox.setValue(100)
  65.         self.zoomSpinBox.setSuffix(self.tr("%"))
  66.         self.zoomSpinBox.setFocusPolicy(Qt.NoFocus)
  67.         self.progressBar= QProgressBar()
  68.         self.toolBar.addWidget(self.zoomSpinBox)
  69.         self.toolBar.addSeparator()
  70.         self.toolBar.addAction(self.setUrlAction)
  71.         self.toolBar.addWidget(self.progressBar)
  72.       
  73.     def createLayout(self):  
  74.         vBoxLayout = QVBoxLayout()
  75.         vBoxLayout.addWidget(self.webView)
  76.         vBoxLayout.addWidget(self.toolBar)
  77.         
  78.         mainLayout=QGridLayout()
  79.         mainLayout.setContentsMargins(0,0,0,0)
  80.         mainLayout.addLayout(vBoxLayout,0,0)
  81.         self.setLayout(mainLayout)
  82.         
  83.     def createConnections(self):
  84.         self.connect(self.homePageAction,SIGNAL('triggered()'),self.homePage)
  85.         self.connect(self.webView,SIGNAL('loadProgress(int)'),
  86.             self.progressBar, SLOT('setValue(int)'))
  87.         self.connect(self.setUrlAction,SIGNAL('triggered()'),self.setUrl)    
  88.         self.connect(self.zoomOutAction,SIGNAL('triggered()'),self.zoomOut)
  89.         self.connect(self.zoomInAction,SIGNAL('triggered()'),self.zoomIn)
  90.         self.connect(self.zoomFixAction,SIGNAL('triggered()'),self.zoomFix)
  91.         self.connect(self.zoomSpinBox, SIGNAL('valueChanged(int)'),self.setZoomFactor)
  92.         self.connect(self.webView, SIGNAL('linkClicked(QUrl)'), self.loadLink);#实现进入二级超链接
  93.         
  94.         
  95.     def homePage(self):
  96.         self.webView.load(QUrl("http://www.baidu.com"))
  97.           
  98.     def zoomOut(self):
  99.         self.zoomSpinBox.setValue(self.zoomSpinBox.value() - self.ZoomStepSize)
  100.         
  101.     def zoomIn(self):
  102.         self.zoomSpinBox.setValue(self.zoomSpinBox.value() + self.ZoomStepSize)
  103.         
  104.     def zoomFix(self):
  105.         self.zoomSpinBox.setValue(100.0)
  106.     
  107.     def setZoomFactor(self,zoom):
  108.         self.webView.setZoomFactor(zoom /100.0)
  109.         
  110.     def setUrl(self):
  111.         url,ok = QInputDialog.getText(self,self.tr("设置网址"),self.tr("网址:"))
  112.         theurl = str(url)
  113.         
  114.         if ok:
  115.             if theurl.find("://") == -1:
  116.                 theurl = "http://" + theurl
  117.         
  118.             self.webView.load(QUrl(theurl))
  119.     
  120.     
  121.     def loadLink(self, url):
  122.         self.webView.load(QUrl(url))  
  123.         
  124.   
  125.         
  126. app = QApplication(sys.argv)
  127. BrowserWindow = browserWindow()
  128. BrowserWindow.show()
  129. sys.exit(app.exec_())


运行结果:



新版:


源代码:
webborwser.rar (87 K) 下载次数:162


离线lusugu

只看该作者 1楼 发表于: 2011-06-29
离线zsjgs
只看该作者 2楼 发表于: 2011-06-29
离线hxing
只看该作者 3楼 发表于: 2011-06-30
离线zjfshowtime
只看该作者 4楼 发表于: 2011-06-30
wo ding!
离线青春岁月

只看该作者 5楼 发表于: 2011-06-30

我顶一下!
go!   go!  go!  go!
离线magic阳
只看该作者 6楼 发表于: 2011-07-01
离线akaterry
只看该作者 7楼 发表于: 2011-07-02
离线luoyang

只看该作者 8楼 发表于: 2011-07-04
哎呦 ~不错哦~
离线kimtaikee

只看该作者 9楼 发表于: 2011-07-05
我发现图片总变但是内容没变

离线ppdayz

只看该作者 10楼 发表于: 2011-07-06
支持下
快速回复
限100 字节
 
上一个 下一个