2012/09/26(水) [n年前の日記]
#1 [python] QTextEditで実験中
PyQt の QtextEdit を勉強中。
◎ 行の区切り文字。 :
QTextCursor.selectedText() で選択範囲の文字列を取得した後、改行コード("\n") で split() してリストを得れば、行単位で処理ができるかも、と思ったものの。試してみると上手く行かずにハマったり。
_QTextCursor Class Reference を読んでみたら、どうも Unicode U+2029 paragraph separator character なるものでどうにかしろと書いてあるようで。試しに、.split(u"\u2029") としてみたら、一応行単位でリストに出来たように見える。これで合ってるのかどうかわからんけど。
.replace() で \n に変換せよ、と書いてあるようにも見えるのだけど、そのようにしてみたら、謎の文字が混入するように見えた。なんでだろ。
_QTextCursor Class Reference を読んでみたら、どうも Unicode U+2029 paragraph separator character なるものでどうにかしろと書いてあるようで。試しに、.split(u"\u2029") としてみたら、一応行単位でリストに出来たように見える。これで合ってるのかどうかわからんけど。
.replace() で \n に変換せよ、と書いてあるようにも見えるのだけど、そのようにしてみたら、謎の文字が混入するように見えた。なんでだろ。
◎ Undo/Redoの有効無効。 :
Undo/Redoが使えるか使えないかを、ツールバー上のボタンやメニュー項目に反映させたいなと思ったのだけど、やり方が分からず。
_Index of /doc/PyQt4-devel-4.8.6/examples/demos/textedit の textedit.py にやり方の例が書いてあった。重要なところだけ引用。
_Index of /doc/PyQt4-devel-4.8.6/examples/demos/textedit の textedit.py にやり方の例が書いてあった。重要なところだけ引用。
self.textEdit.document().undoAvailable.connect(self.actionUndo.setEnabled) self.textEdit.document().redoAvailable.connect(self.actionRedo.setEnabled) self.actionUndo.setEnabled(self.textEdit.document().isUndoAvailable()) self.actionRedo.setEnabled(self.textEdit.document().isRedoAvailable())おそらくだけど、 .undoAvailable()、.redoAvailable() が、Undo/Redoの履歴に変化があった時に出てくるシグナル(イベントみたいなもの?)じゃないかと。そして、actionUndo は、おそらくUndo用に用意されたメニュー項目。setEnabled() は、項目を有効にするか無効にするか指定出来て。QTextEdit.document() が Undo/Redoができるかどうかを .isUndoAvailable()、.isRedoAvailable() で持っているから、ソレをそのまま渡して有効無効を切替える。のかなと。自信無いけど。
[ ツッコむ ]
以上です。