<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 67  文章 - 79  trackbacks - 0
    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    這篇是為了做Rss項目而研究WebKit后的副產品,但是它的意義遠大于離線Rss閱讀

    這是另一個RichEdit 并且編輯起來更容易
    而且它很容易轉換到B/S結構,不管需求是環肥燕瘦都能適應......

    估計這是最簡單的一種 xml文檔、html預覽、RichEdit 三位一體的方案了......

    代碼:
    import sys,locale
    encoding
    =locale.getdefaultlocale()[1]
    from PyQt4 import Qt
    from PyQt4 import QtCore
    from PyQt4 import QtGui
    from PyQt4 import QtWebKit

    html
    =r'''<html>
    <head></head>
    <body>
    <script>
    function onChanged(e,id) { 
    var element =document.getElementById(id);
    python.onChanged(id,element.textContent); 
    }
    </script>
    <div id="main">
    <h1 id="title"" contenteditable="true" onkeyup="onChanged(event,'title')">T1</h1>
    <div id='body'>
    <p id='body_line1' contenteditable="true" onkeyup="onChanged(event,'body_line1')">123456</p>
    <p id='body_line2' contenteditable="true" onkeyup="onChanged(event,'body_line2')">abdcdef</p>
    </div>
    </div>
    <body>
    </html>
    '''

    class PythonJS(QtCore.QObject):
        
        
    __pyqtSignals__ = ("contentChanged(const QString &,const QString &)")
        
        @QtCore.pyqtSignature(
    "QString,QString")
        
    def onChanged(self, id,msg):
            self.emit(QtCore.SIGNAL(
    'contentChanged(const QString &,const QString &)'),id, msg)

        @QtCore.pyqtSignature(
    "", result="QString")
        
    def message(self): 
            
    return "Message!"


    class MainWindow(QtGui.QMainWindow):
        
    def __init__(self):
            super(MainWindow,self).
    __init__()
            self.update
    =True
            
            self.tabs
    =QtGui.QTabWidget(self)
            self.browser
    =QtWebKit.QWebView(self.tabs)
            self.edit
    =QtGui.QPlainTextEdit(self.tabs)
            
            self.tabs.addTab(self.browser,
    'View')
            self.tabs.addTab(self.edit,
    'Edit')
            self.html
    =html
            self.edit.setPlainText(self.html)
            
            self.pjs
    =PythonJS()
            
            self.connect(self.edit,QtCore.SIGNAL(
    'textChanged()'),self.onTextChanged)
            self.connect(self.pjs,QtCore.SIGNAL(
    'contentChanged(const QString &,const QString &)'),self.onJSMessage)
            self.connect(self.browser.page().mainFrame(),QtCore.SIGNAL(
    'javaScriptWindowObjectCleared ()'),self.onObjectClear)
            
            self.browser.setHtml(self.html)
            
        
    def onJSMessage(self,id,msg):
            
            self.html
    = self.browser.page().mainFrame ().toHtml()
            
    #print unicode(self.html).encode(encoding)
            self.setEditText(self.html)
            
        
    def resizeEvent(self,s):
            size
    =self.size()
            self.tabs.resize(size)

        
    def setEditText(self,str,update=False):
            t
    =self.update
            self.update
    =update
            self.edit.setPlainText(str)
            self.update
    =t
            
                
        
    def onTextChanged(self):
            
    if self.update:
                self.html
    = self.edit.toPlainText() 
                self.browser.setHtml(self.html)
                self.browser.page().mainFrame().addToJavaScriptWindowObject(
    'python',self.pjs) 
                self.browser.reload()
                
        
    def onObjectClear(self):
            self.browser.page().mainFrame().addToJavaScriptWindowObject(
    'python',self.pjs)  
        
    if __name__=='__main__':
        app
    =QtGui.QApplication(sys.argv)
        frame
    =MainWindow()
        frame.show()
        sys.exit(app.exec_())       
            



    posted on 2008-07-30 15:55 zarra 閱讀(1354) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 我要看免费的毛片| 精品久久8x国产免费观看| 日本媚薬痉挛在线观看免费| 久久亚洲精品无码aⅴ大香| 13小箩利洗澡无码视频网站免费| 亚洲精品456播放| 特a级免费高清黄色片| 亚洲国产av一区二区三区| 无码日韩人妻AV一区免费l | 亚洲字幕AV一区二区三区四区| 最新黄色免费网站| 亚洲依依成人精品| 一个人看的www在线观看免费| 亚洲精品国产首次亮相| 四虎永久在线精品视频免费观看| 精品久久久久久久久亚洲偷窥女厕| 日韩免费观看的一级毛片| 猫咪www免费人成网站| 亚洲欧洲久久av| 任你躁在线精品免费| 亚洲国产国产综合一区首页| 香蕉成人免费看片视频app下载| 亚洲一区二区电影| 色窝窝免费一区二区三区| 国产精品亚洲专区无码唯爱网| 免费国产在线观看老王影院| 久久精品无码专区免费| 亚洲AV人无码激艳猛片| 又粗又大又黑又长的免费视频| 亚洲av永久中文无码精品| 亚洲一级特黄无码片| 少妇无码一区二区三区免费| 国产精品高清视亚洲一区二区| 国产免费人成在线视频| 大地影院MV在线观看视频免费| 亚洲第一香蕉视频| 四虎国产精品免费视| 日本免费一区二区三区四区五六区| 亚洲日本久久一区二区va| 久久久久久A亚洲欧洲AV冫| 日本人成在线视频免费播放|