質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3965閲覧

tkinterにて、textウィジェットでの文字間隔の設定について

hijiri

総合スコア61

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/24 06:15

tkinterにて、簡単なGUIを作成しております。

textウィジェットや、scrolledtextウィジェットについてなのですが、文字と文字の間隔を設定する方法がわかりません。

spacing1、spacing2、spacing3

などの設定で、行間や、上端や下端の間隔の設定をすることは可能なのですが、文字間隔を設定する方法がよくわかりません。

もしそのような設定が可能でしたら、どのようにすればよいのでしょうか?

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

CSS でいう letter spacing の設定ですよね。

それ以外でしたら、フォントによっても文字間隔は変わります。
例えば、コードを書くエディタで、文字間隔の調整をする等の目的なら
Helvetica等の等幅フォント指定で十分だと思います。

レイアウト目的で任意の間隔に調整したい場合は、
個々の文字間隔の調整というのは対応してない様でした。
一応、以下は調べた範囲

Tcl/Tk のソースコード (C言語)

Tk source code

  • Text ウィジェットのオプション (tkText, tkTextDisp ~)

 テキストウィジェット内部は行でテキストデータの管理をしていて、
縦 spacing1~spaicng3
横 rmargin, lmargin, justify 辺りが x座標の調整ですが
個々の文字ではなく、行が対象のようでした。

  • Font のオプション (tkFont)

 linux であれば、XLFD に setwidth というオプションが有りますが、
これは、等幅かプロポーショナルフォントの設定のみです。
ピクセル単位の微調整といった事は出来ません。

他の環境でのサポート状況

  • Web系やブラウザ組込の場合 CSS の letter spacing が使えるはずです。
  • Qt5 では、フォントのプロパティに setLetterSpacing があります。
  • SVG にも letter spacing プロパティはあり、

 tk は 8.7 で キャンバスへの SVG 描画を部分対応するようです。
表示のみなら対応可能になるかもしれない。ただ、現状利用は難しいです。


tkinter上で実装する代案は、あまり良い案が思い浮かびませんでした。
実装に掛かる時間や労力を考えると、状況次第では他のライブラリ選んだ方が良い。

任意の幅を持つフォントを作るとか、
エディタのテキスト描画部分のみ改造(tcl/tkを独自にコンパイル)
キャンバス上に1文字づつ描画してエディターを1から作る。

投稿2020/09/26 07:14

teamikl

総合スコア8760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hijiri

2020/09/27 00:43

ありがとうございます。 何かオプションで簡単に設定できる方法があるのでは・・と思ったのですが、なかなか難しいのですね。 また何か別の方法を考えてみようと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問