- 列:Python基本チュートリアルディレクトリ
- コラム:PyQtを使用してグラフィカルインターフェイスPythonアプリケーションを開発する
- コラム:PyQtの概要
- 古い類人猿のPythonブログ投稿ディレクトリ
1.概要
QTextEditは高度なWYSIWYGドキュメントビューアおよびエディタであり、HTML4スタイルのタグを使用してリッチテキスト形式をサポートし、画像、リスト、テーブルを表示できます。
PyQtのリッチテキスト処理は、QTextEdit、QTextDocument、QTextCharFormat、QTextCursor、QTextBlock、QTextList、QTextFrame、QTextTable、QTextBlockFormat、QTextListFormat、QTextFrameFormat、QTextTableFormatなどを含む一連のリッチクラスを提供します。同時に、HTMLの処理面を考慮して、PythonのBeautifulSoupモジュールの強力な関数を解析および編集に使用できるため(古い類人猿のPythonクローラーのトピックを参照)、このセクションの詳細は説明しません。次の記事を理解することを全員に推奨します。
2.プロパティ
テキスト編集QTextEditがDesignerで設定できるプロパティは次のとおりです。
- autoFormatting:autoFormattingプロパティは、自動フォーマット機能を制御するために使用されます。そのタイプは列挙型AutoFormattingFlagです。デフォルト値はAutoNoneであり、これは使用できません。AutoBulletListに設定すると、ユーザーが左端の列にアスタリスク( "*")を入力したとき)または、既存のリストアイテムでEnterキーを押すと、箇条書きリストが自動的に作成されます。AutoAllの設定は現在AutoBulletListと同じであり、今後さらに拡張される可能性があります。このプロパティには、メソッドautoFormatting()およびsetAutoFormatting()を使用してアクセスできます。
- tabChangesFocus:tabChangesFocusプロパティは、タブキーがフォーカスを変更するか、入力として受け入れられるかを制御します。場合によっては、テキスト編集により、ユーザーがTabキーを使用してタブを入力したりインデントを変更したりできないようにする必要があります。これにより、フォーカスチェーンが壊れ、デフォルト値がFalseになり、tabChangesFocus()およびsetTabChangesFocus()メソッドを介してアクセスできるためです。
- documentTitle:documentTitle属性は、テキストから解析されたドキュメントタイトルを保持します(HTMLタグを介して)
)。默认情况下,对于新创建的空文档,此属性包含空字符串。可以通过方法documentTitle()、setDocumentTitle()来访问。 - undoRedoEnabled:undoRedoEnabledプロパティは、取り消しとやり直しを有効にするかどうかを制御するために使用されます。これはデフォルトで有効になっており、isUndoRedoEnabled()、setUndoRedoEnabled()メソッドを介してアクセスできます。
- lineWrapMode:lineWrapModeプロパティは行の折り返しモードを制御するために使用されます。その型は列挙型QTextEdit.LineWrapModeです。デフォルト値はWidgetWidthです。このプロパティにアクセスするには、メソッドlineWrapMode()、setLineWrapMode()を呼び出します。改行モードをFixedPixelWidthまたはFixedColumnWidthに設定する場合は、setLineWrapColumnOrWidth()メソッドを呼び出して改行のピクセル幅または文字幅を設定する必要もあります。これらの2つのモードでは、単語の整合性が維持されません。
- readOnly:readOnlyは、エディターが読み取り専用かどうかを制御するために使用されます。デフォルトはFalseで、isReadOnly()、setReadOnly()を介してアクセスできます。
- html:html属性は、エディター内のテキストをhtmlテキストに変換するためのインターフェースを提供します。実際には、完全なhead、html、body、およびその他のタグ要素を含むhtml形式のテキストがここに設定されます。コンテンツが不完全であるか、構文が正しくない場合代わりにデフォルトのHTMLテキストを使用します。toHtml()を使用して、エディター内のテキストをhtml属性に対応するhtmlテキストの本文に挿入します。対応するラベルは、エディターによって表示されるテキストの内容に応じて追加されることがあるため、エディターにHTMLテキストを入力する場合は、htmlドキュメント関連するラベルテキストを基本形式で入力しないでください。エディターが関連するすべての手動入力コンテンツをプレーンテキストとして扱うため、入力しても意味がありません。このプロパティはsetHtml()を使用して変更できますが、入力コンテンツをプロパティの値で単に置き換えるのではなく、パラメーターのコンテンツが解析され、ラベルが付けられず、ブラウザーでhtmlドキュメントを読み取るようにエディターに保存されます。同時に、非表示コンテンツの標準HTMLドキュメントの基本フレーム形式がhtml属性に保存され、期間中は多数のパラメーターのhtmlタグが削除されます。通常のテキストは、toHtmlが再度呼び出されたときにこのdivタグが復元されないことを示していますが、pタグに置き換えることができます。特定の状況はより複雑であり、古い類人猿はそれを注意深く研究していません
- overwriteMode:overwriteMode属性は、ユーザー入力テキストが既存のテキストを置き換えるかどうかを制御するために使用されます。Trueの場合、入力文字は現在のカーソル位置から1つずつ現在の文字を置き換えます。Falseの場合、入力文字はカーソルに挿入されます。デフォルト値はFalseで、overwriteMode()、setOverwriteMode()メソッドを介してアクセスできます。
- tabStopWidth:tabStopWidthプロパティは、タブキーがエディターに入力されたときに移動するピクセル数を制御するために使用されます。デフォルト値は80ピクセルで、tabStopWidth()およびsetTabStopWidth()メソッドを介してアクセスできますが、このプロパティはQt 5.10以降のバージョンでは次のとおりです。 tabStopDistanceに置き換えられましたが、5.13ドキュメントにはそのようなプロパティはありませんが、実際にはクラスメソッドは引き続きサポートされています。tabStopWidthとtabStopDistanceの唯一の違いは、前者は整数であり、後者はより正確な浮動小数点数であることです。値もリンクされています。tabStopWidthを変更すると、tabStopDistanceがtabStopWidthの値に直接変更されます。tabStopDistanceの値が変更されると、tabStopDistanceの丸められた値がtabStopWidthの値として使用されます。最終的に生成されるコードはtabStopDistanceを使用します
- acceptRichText:acceptRichTextプロパティは、エディターがユーザーのリッチテキストの挿入を受け入れるかどうか(クリップボードやドラッグアンドドロップなど)を制御するために使用されます。このプロパティがFalseテキストに設定されている場合、エディターはユーザーからのプレーンテキスト入力のみを受け入れます。デフォルト値はTrueで、acceptRichText()およびsetAcceptRichText()メソッドを介してアクセスできます。
- cursorWidth:cursorWidthを使用して、エディターカーソルのピクセルの幅を設定します。デフォルト値は1で、cursorWidth()、setCursorWidth()メソッドを介してアクセスできます。
- textInteractionFlags:textInteractionFlagsプロパティは、エディターがユーザー入力に応答する方法を制御するために使用されます。そのタイプはQt.TextInteractionFlagsで、エディターがキーボードまたはマウスでテキストを選択できるかどうか、編集できるかどうか、リンクにマウスまたはキーボードでアクセスできるかどうかなどを制御するために使用されます。デフォルト値エディターが読み取り専用か派生QTextBrowserオブジェクトかによって異なりますが、textInteractionFlags()、setTextInteractionFlags()メソッドを介してアクセスできます。特定の列挙型の値は公式ドキュメントを参照してください
- placeholderText:placeholderTextは、エディタのプレースホルダです。エディタにテキストがない場合、テキストはエディタに灰色で表示されます。入力文字が自動的にクリアされると、placeholderText()、setPlaceholderText()メソッドを介してアクセスできます。
Designerで設定できるプロパティに加えて、QLineEditにはplainTextプロパティもあります。
- plainText:plainText属性は、プレーンテキストをエディターに保存するために使用されます。toPlainText()を呼び出すと、エディターにプレーンテキストが返されます。テキストエディターに他のコンテンツタイプ(HTMLタグなど)がある場合、toPlainText()を呼び出してもコンテンツは変換されませんプレーンテキストの場合、唯一の例外は&nbsp(非ブレークスペース、&nbspはHTMLの1つのスペースを意味します)をスペースに置き換えることです。setPlainText()を呼び出して、このプロパティの値を変更できます。「PyQt(Python + Qt)学習エッセイ:QTextEditのSetText、SetHtml、SetPlainTextの違い」を参照してください。
3つの重要な方法
次の複雑なメソッドは呼び出し文法を紹介し、複雑でないメソッドは呼び出し文法を紹介しません。公式ドキュメントを確認できます:
- appendメソッド
appendメソッドはスロットメソッドです。このメソッドは、エディターの最後にパラメーターに対応するテキストのセクションを追加します。このテキストのセクションのフォーマットは、現在のカーソルがあるセクションと同じです。呼び出し構文:append(str text)
- canPaste()メソッド:クリップボードからエディターにテキストを貼り付けることができるかどうかを返すために使用されます
- clear()メソッド:スロットメソッド、エディター内のすべてのテキストをクリア、やり直し/元に戻す履歴もクリアされます
- copyメソッド:スロットメソッド。エディターで選択したテキストをクリップボードにコピーするために使用されます
- createStandardContextMenuメソッド:
このメソッドは、エディターでマウスの右ボタンが使用されたときに表示されるポップアップメニューを作成するために使用されますが、パラメーターがある場合とない場合の2つの呼び出しメソッドがあり、パラメーターはドキュメント内の指定された位置にポップアップされます。エディターのさまざまな場所にさまざまなショートカットメニューがポップアップします。呼び出し構文:createStandardContextMenu()、createStandardContextMenu(QPoint position)
- currentCharFormat()メソッド:タイプがQTextCharFormatである現在の文字フォーマットを返し、QTextCharFormatはQTextEditのテキストフォーマットを制御するために使用されます(これらのテキストのストレージタイプはQTextDocumentオブジェクトであり、QTextEdit document()メソッドを介して取得できます。QTextCharFormatおよびQTextDocumentオブジェクトについてこの記事では詳しく説明しません)、これらのテキスト形式制御情報は、ハイパーテキストの視覚形式制御情報と同様に、テキストの視覚形式を指定するために使用されます。
- cursorForPosition()メソッド:指定された位置にあるQTextCursorテキストカーソルオブジェクトを返します。QTextCursorテキストカーソルは、テキストエディタでのカーソルの動作をシミュレートするプログラミングインターフェースです。これは、テキストドキュメントのコンテンツと基本構造のオブジェクトにアクセスして変更するために使用されます。QTextCursorには、QTextDocumentでのカーソルの位置とカーソルによる選択に関する情報が含まれています。QTextCursorは、テキストエディターのテキストカーソルの動作に従ってモデル化されており、ユーザーインターフェイスを介して標準的な操作を実行するためのプログラミング方法を提供します。
- document()メソッド:documentメソッドは、テキストエディターが依存するQTextDocumentドキュメント管理オブジェクトを返します。これを使用して、テキストを操作できます。
- EnsureCursorVisible()メソッド:このメソッドを使用して、エディター内のカーソルが表示されていることを確認します。現在表示されていない場合は、テキストをスクロールできます。
- find()メソッド:指定した文字列をエディターで検索し、構文を呼び出します。
- bool find(str exp、QTextDocument.FindFlags options =
QTextDocument.FindFlags()) - bool find(QRegExp exp、QTextDocument.FindFlags options =
QTextDocument.FindFlags())
expは、正規ストリングまたはQRegExpタイプの正規表現にすることができます。オプションを使用して、前方または後方のどちらで検索するか、大文字小文字を区別して検索するか、単語全体を検索するかを指定します。具体的な値については、公式ドキュメントを参照してください。 。expが正規表現の場合、大文字と小文字を区別するオプションは無視されますが、正規表現は大文字と小文字を区別するかどうかを制御します
- insertHtml()メソッド:HTMLテキストに従って指定されたテキストを現在の位置に挿入します
- insertPlainText()メソッド:パラメータで指定されたテキストを現在の位置に挿入します
- moveCursor()メソッド:エディターでのカーソル移動の制御、構文の呼び出し:、
moveCursor(operation, mode = QTextCursor.MoveAnchor)
ここでoperationは列挙型QTextCursor.MoveOperationで、ドキュメントの先頭への移動、行の先頭への移動などのカーソル移動メソッド、特定の値を制御するために使用されます公式ドキュメントを参照してください。モードは列挙型QTextCursor.MoveModeです。具体的な値については、公式ドキュメントを参照してください - paste()メソッド:pasteはスロットメソッドであり、クリップボードのテキストを現在の位置にコピーします
- redo()およびundo()メソッド:undoおよびredoはスロットメソッドです。undo()メソッドの実行後、redoを使用して最後の操作を再実行できます。
- selectAll()メソッド:selectAllは、すべてのテキストを選択するスロットメソッドです
- setCurrentCharFormat()メソッド:テキスト形式の制御情報を設定し、構文を呼び出します。
setCurrentCharFormat(QTextCharFormat format)
- setTextBackgroundColor()メソッド:setTextBackgroundColorはスロットメソッドであり、背景色を設定します。textBackgroundColor()メソッドを使用して対応する値を取得できます
- setTextColor()メソッド:setTextColorはスロットメソッドであり、テキストの色を設定します。textColor()を介して対応する値を取得できます
-
- setTextCursor()メソッド:setTextCursorメソッドは、現在表示されているカーソルオブジェクトを設定するために使用されます。呼び出し構文:、
setTextCursor(QTextCursor cursor)
現在のカーソルオブジェクトは、textCursor()メソッドで取得できます。
- setTextCursor()メソッド:setTextCursorメソッドは、現在表示されているカーソルオブジェクトを設定するために使用されます。呼び出し構文:、
- zoomIn()、zoomOut()メソッド:どちらもスロットメソッドで、指定したテキストフォントのパラメーターサイズを拡大または縮小します。基本フォントサイズはsetFontPointSizeで設定できます。
第四に、信号
- copyAvailable(bool yes):この信号は、テキストが選択または選択解除されたときに発行され、コピー可能かどうかを示します。yesは選択に対してTrue、選択解除時にFalseです。
- currentCharFormatChanged(QTextCharFormat f):この信号は、現在のテキスト形式コントロールが変更されたときに発生します
- cursorPositionChanged():カーソルの位置が変化したときにこのシグナルを発行します
- redoAvailable(bool available):このシグナルは、やり直しの状態が変化したときに発生します
- :selectionChanged():選択したテキストが変更されたときにこのシグナルを発行します
- textChanged():テキストの内容が変更されたときにこのシグナルを送信します
- undoAvailable(bool available):このシグナルは、元に戻すの状態が変化したときに発生します
V.まとめ
QTextEditはWYSIWYGリッチテキストエディターで、setHtml()を使用してテキストを設定または置換したり、clear()を使用してテキスト全体を削除したりできます。テキスト自体は、QTextCursorクラスを使用するか、便利な関数insertHtml()、insertPlainText()、append()またはpaste()を使用して挿入できます。QTextCursorは、複雑なオブジェクト(テーブルやリストなど)をドキュメントに挿入することもできます。デフォルトでは、テキスト編集は、テキスト編集コンポーネントに合わせて空白になっています。
QTextEditのテキストオブジェクトは、管理のためにQTextDocumentクラスに依存します。QTextDocumentクラスは、QTextCursorを使用して、テキストに対して豊富な操作を実行できます。ただし、時間とスペースが限られているため、この記事ではQTextDocumentとQTextCursorについて詳しく説明していません。Lao Apeが提供する参照ドキュメントまたは公式Webサイトのドキュメントを参照できます。