ホームページ  >  記事  >  バックエンド開発  >  PyQt6を使用して文字形式を切り替える

PyQt6を使用して文字形式を切り替える

PHPz
PHPz転載
2024-02-09 18:57:03631ブラウズ

使用 PyQt6 切换字符格式

質問内容

趣味でカスタムワードプロセッサを書いています。 Pythonとpyqt6を使用しています。

次のように書きました。その目的は、テキストを選択して太字の書式設定を適用すると (たとえば、「ctrl-b」を押すことによって)、書式設定が切り替わることです。具体的には、選択したすべてのテキストが太字の場合、太字の書式設定を削除する必要があります。それ以外の場合は、太字の書式が適用されます。

リーリー

ただし、太字の書式設定は削除されません。

たとえば、「this is a test」という文で、「is a」を選択して太字書式を適用すると、「this is a test」が表示されます。「is a」は太字が適切です。ただし、選択を行った状態で「ctrl-b」を押しても太字のままです。最初または最後の文字の選択を解除すると、太字の切り替えが期待どおりに機能します (if /else ロジックを反転してみましたが、それも失敗しました).

###私は何を取りこぼしたか?

更新: https://gist.github.com/ovid/65936985c6838c0220620cf40ba935fa に動作する最小限のテスト ケースを追加しました


正解


## 問題#setboldtext

関数の特徴は、self.texteditor.currentcharformat().fontweight() を使用して太字ステータスをチェックすることです。これは、現在のカーソル位置の文字の書式設定のみを反映し、太字ステータスは反映しません。選択したテキスト形式全体。カーソルが選択範囲の先頭または末尾にある場合、選択範囲全体の書式設定が正確に表されていない可能性があります。 そこで、既存のカーソルを使用し、必要に応じて調整して書式設定を確認し、新しいフォントの太さを

setfontweight()

に直接適用します。 これで次のようになります:

更新されたコード:

リーリー

以上がPyQt6を使用して文字形式を切り替えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。