<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 閱讀(1350) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲最大福利视频网站| 亚洲精品和日本精品| 亚洲va在线va天堂va四虎| 亚洲免费观看在线视频| 精品久久久久成人码免费动漫 | 日本成人免费在线| 国产精品亚洲精品青青青| 人成免费在线视频| 日韩中文字幕在线免费观看| 99亚偷拍自图区亚洲| 精品无码国产污污污免费| 中文字幕精品亚洲无线码二区 | 亚洲精品第一国产综合境外资源| 美女扒开尿口给男人爽免费视频 | 91情国产l精品国产亚洲区 | 亚洲综合视频在线| 1000部啪啪未满十八勿入免费| 亚洲电影国产一区| 国产精品成人免费福利| 亚洲午夜成人精品无码色欲| 国产一区二区三区在线免费观看 | 久久国产乱子伦精品免费午夜| 国产亚洲精品a在线无码| 精品亚洲福利一区二区| 又黄又大又爽免费视频| 好吊色永久免费视频大全 | 亚洲欧洲无卡二区视頻| 免费一级特黄特色大片在线| 黄 色一级 成 人网站免费| 久久夜色精品国产嚕嚕亚洲av| 最好看的中文字幕2019免费| 亚洲日本VA午夜在线电影| 亚洲国产日韩成人综合天堂 | 亚洲欧洲一区二区| 一本久久A久久免费精品不卡| 亚洲综合精品香蕉久久网| 精品一区二区三区免费毛片爱| 一本色道久久88—综合亚洲精品 | 国产亚洲色婷婷久久99精品| 18女人水真多免费高清毛片| 自拍偷区亚洲国内自拍|