<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)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲成AV人片在线观看| 国产成人在线观看免费网站| 一区二区三区精品高清视频免费在线播放 | 国产免费看JIZZ视频| 亚洲国产成人精品久久| 成人福利免费视频| 四虎免费久久影院| 黄页网站在线免费观看| 亚洲女人被黑人巨大进入| 精品97国产免费人成视频| 两个人的视频高清在线观看免费| 亚洲无成人网77777| 无码高潮少妇毛多水多水免费| 日韩亚洲产在线观看| 美女被免费视频网站a国产| 黄色毛片免费观看| 亚洲一区爱区精品无码| 久久亚洲AV成人无码国产最大| 在线视频免费国产成人| 一本一道dvd在线观看免费视频| 国产亚洲视频在线播放| 99免费视频观看| 亚洲中文字幕精品久久| 免费黄色网址网站| 亚洲成a人片在线观看无码| 最近新韩国日本免费观看| 亚洲一区精彩视频| 114一级毛片免费| 亚洲精品无码专区久久| 亚洲Av无码乱码在线观看性色 | 成年男女男精品免费视频网站| 美景之屋4在线未删减免费| 狠狠色伊人亚洲综合成人| 亚洲人成免费电影| 真人无码作爱免费视频| 亚洲国产精品国自产拍电影| 久久这里只有精品国产免费10| 猫咪www免费人成网站| 亚洲短视频男人的影院| 日韩免费视频播放| 久久国产精品2020免费m3u8|