takuroooのブログ

勉強したこととか

QTextEditの基本的なこと

前回に引き続きQt for Python(PySide2)のQTextEditについて勉強したのでまとめていく。

QTextEditを使うとテキストを入力できるフォームを作成することができる。

目次

TextEditを表示する

f:id:takuroooooo:20200126102928p:plain

import sys
from PySide2.QtWidgets import QApplication, QTextEdit

app = QApplication(sys.argv)

qw_text_edit = QTextEdit()
qw_text_edit.show()

sys.exit(app.exec_())

ユーザー自身が文字を入力することができる。 f:id:takuroooooo:20200126102947p:plain

TextEditに文字をを表示する

f:id:takuroooooo:20200126172845p:plain

import sys
from PySide2.QtWidgets import QApplication, QTextEdit

app = QApplication(sys.argv)

qw_text_edit = QTextEdit()
qw_text_edit.append('This is a text edit widget.') # 文字を表示する
qw_text_edit.show()

sys.exit(app.exec_())

appendを使うことで最初に表示するテキストを設定できる。

編集禁止にする

f:id:takuroooooo:20200126173748p:plain

import sys
from PySide2.QtWidgets import QApplication, QTextEdit

app = QApplication(sys.argv)

qw_text_edit = QTextEdit()
qw_text_edit.setReadOnly(True)  # 編集禁止にする
qw_text_edit.append('This is a text edit widget.')
qw_text_edit.show()

sys.exit(app.exec_())

文字の色を変える

f:id:takuroooooo:20200126173312p:plain

import sys
from PySide2.QtWidgets import QApplication, QTextEdit
from PySide2.QtGui import QColor

app = QApplication(sys.argv)

qw_text_edit = QTextEdit()
qw_text_edit.setTextColor(QColor(255, 0, 0, 255)) # 文字の色を赤色にする
qw_text_edit.append('This is a text edit widget.')
qw_text_edit.show()

sys.exit(app.exec_())

文字の大きさを変える

f:id:takuroooooo:20200126173515p:plain

import sys
from PySide2.QtWidgets import QApplication, QTextEdit

app = QApplication(sys.argv)

qw_text_edit = QTextEdit()
qw_text_edit.setFontPointSize(30)  # 文字の大きさを変える
qw_text_edit.append('This is a text edit widget.')
qw_text_edit.show()

sys.exit(app.exec_())

フォントを設定する

f:id:takuroooooo:20200126175240p:plain

import sys
from PySide2.QtWidgets import QApplication, QTextEdit
from PySide2.QtGui import QFont

app = QApplication(sys.argv)

qw_text_edit = QTextEdit()
qt_font = QFont("Monaco")  # monaco fontを生成
qt_font.setStyleHint(QFont.Helvetica)  # monacoが使用できない場合はHelveticaにする
qw_text_edit.setFont(qt_font)  # fontを設定
qw_text_edit.append('This is a text edit widget.')
qw_text_edit.show()

sys.exit(app.exec_())

もしMonacoがなければsetStyleHintで設定されたフォントが適用される。

カーソルの位置を先頭行に設定する

f:id:takuroooooo:20200126184910p:plain

import sys
from PySide2.QtWidgets import QApplication, QTextEdit
from PySide2.QtGui import QTextCursor

app = QApplication(sys.argv)

qw_text_edit = QTextEdit()
for i in range(20):
    qw_text_edit.append(str(i))

first_row_block = qw_text_edit.document().findBlockByLineNumber(0)  # 1行目のblockを取得
text_cursor = QTextCursor(first_row_block)  # カーソルを取得
qw_text_edit.setTextCursor(text_cursor)  # cursorを1行目に設定

qw_text_edit.show()

sys.exit(app.exec_())

カーソルに関する設定をしないと最後にappendした行にカーソルがあった状態で起動する。

ソースコード

github.com