[PySide] 外部ツールを起動して、標準出力をQTextEditに出力する

前回の続きで、QTextEditに外部ツールの標準出力を出すのを試してみました。

ボタンを押すと、コマンドプロンプトのHELPを表示するスクリプト。
ソースはこんな感じ。
PySideで外部ツールを外部プロセスを実行する場合は、Subprcessではなく QtCore.QProcess()を使います。
基本的な使い方は、

標準出力が出力された時に関数を呼ぶには、readyReadStandartOutput() シグナルを使用。
出力された内容は readAllStandardOutput() で取得する…

までは、すぐ分かったのですが、それだけだと

QTextEdit文字化け

お・・・おう・・・

日本語文字化け問題が発生。
str(byteArray) は cp932 のようだったので

にすればいいのか?とも思ったのですが、printする分には文字化けしなかったものの
QTextEditに表示すると
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-13: ordinal not in range(128)
お・・・おう・・・

その後しばらく調べてみたら、
日本語の文字コードを表示したい場合は、

の一行を入れるとOKとのことだったので試したら

QTextEditOK

できました。
一行いれておけばよしなに計らってくれるようですが、知らないと分からないっすよ|||orz

まだまだ続くPySide!!

追記。

cursor.moveCursor() しただけだと、TextEditにカーソル位置は適応されないらしいので、
処理が終わった後は、TextEdit.setTextCursor(cursor)
で、カーソル位置をセットする必要があります。

コメントを残す

メールアドレスが公開されることはありません。


*