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

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

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

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

Python

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

Q&A

解決済

1回答

2592閲覧

TkInter: フォントのサイズ・タイプの簡易な適用方法を知りたい(フレーム上のWIDGET全てに同じ適用を施したい)

saya24

総合スコア247

Tkinter

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

Python

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

0グッド

0クリップ

投稿2021/10/28 12:22

編集2021/10/28 12:29

イメージ説明
大変初歩的なことですが お分かりの方 教えてください。

一つ目:
以下コードにあるとおり、テーマとしてWINNATIVEを利用していることで 自分の希望が満たされていないのかも知れないのですが
フレーム上の全ウィジェットに 同じフォントを適用したいと考えています。
フレームに対し 試みたところ フォント設定が作用することなかったので
以下の方式でツリービュへの適用が成功しています。この方式でツリービュ全体に適用できたものと解釈し、同様にボタンとラベルにも同じ方式で適用するも 適用されることはありませんでした。

フォーム右のリストボックス(下記コードに現れていませんが) 希望のフォントサイズが適用できていますが
リストボックス全体へ適用した方式ではありません。配置した単体のリストボックスのウィジェットへ 直接フォントサイズ・フォント色・背景を適用しています。
ラベル・ボタン・リストボックス・コンボボックス というようにWIDGETの種類単位に フォントを指定するには どういうようにすればよろしいのでしょうか? 勿論種類単位ではなく、フレーム全体というより簡易な手立てでも構いません。

Python

1 ############################################################################# 2 # # 3 # STYLE # 4 # # 5 ############################################################################# 6 style = ttk.Style() 7 style.theme_use('winnative') 8 style.configure("Frame", font=("Arial", 16)) 9 style.configure("Button", font=("Arial", 20)) 10 style.configure("Label", font=("Arial", 20)) 11 style.configure("Treeview", background="black", foreground="white", fieldbackground="black", font=("Arial", 16)) 12 style.map("Treeview",background=[("selected", "silver")]) 13 style.map("Treeview",foreground=[("selected", "red")])

二つ目:
イメージのフォーム内で赤字で示したコメントのことです。ツリービュー内で 行間がきつく表示されてしまっており、文字がかけて表示されている状況が発生してます。文字ピッチみたいなものを調整することはできますでしょうか?

三つ目:
イメージのフォーム内で黄色で示したコメントのことです。このコンボボックスにも個別に希望のフォントを設定しました(本当は一つ目の質問のとおり、フレーム上の全ウィジェットという指定か ウィジェットの種類単位に定義できればよかったが)
選択リストの中が 相変わらず 小さい文字で表示された状態を克服したいのですが 対処できるでしょうか?

python

1 cmbox_Type = ttk.Combobox(frmIOMenu, state="disabled", height=3, values=list_Type, font=("Arial", 16)) 2 cmbox_Type.grid(row=8, column=0, columnspan=2, sticky=tk.N + tk.S + tk.E + tk.W) 3 cmbox_Type.bind("<<ComboboxSelected>>", cmbox_Type_change, )

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

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

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

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

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

guest

回答1

0

ベストアンサー

一つ目:

style.configure("TFrame", font=("Arial", 16)) style.configure("TButton", font=("Arial", 20)) style.configure("TLabel", font=("Arial", 20))

style.configure の第一引数はウィジェットのクラス名ではなく、
スタイル名を指定します。
Treeview のみ適応できたのは、Treeview のみ例外的にクラス名と同じスタイル名だった為です。
大抵のスタイル名は TFrame, TButton 等、T (ttk の tile) が頭に付きます。

ウィジェットに対応するスタイル名の一覧
https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/ttk-style-layer.html

勿論種類単位ではなく、フレーム全体というより簡易な手立てでも構いません。

個別のスタイルを定義して styleオプションで指定も可能です。

python

1style.configure("AAA.TLabel", font=("", 20)) 2style.configure("BBB.TLabel", font=("", 30)) 3 4labelA = ttk.Label(root, text="A", style="AAA.TLabel") 5labelB = ttk.Label(root, text="B", style="BBB.TLabel") 6 7...

テーマとしてWINNATIVEを利用していることで 自分の希望が満たされていないのかも知れないのですが

ボタンの背景色等、特定のテーマでは意図通りに反映されないものもあるので、
テーマの影響が懸念される場合は、一度テーマを変更して見て下さい。


二つ目:

行間指定ですが、Treeview のスタイルに rowheight オプションがあります。

python

1 2 style.configure("Treeview", 3 4 rowheight=40, 5 6 background="black", 7 foreground="white", 8 fieldbackground="black", 9 font=("Arial", 16)) 10

三つ目:
選択リストの中が 相変わらず 小さい文字で表示された状態を克服したいのですが 対処できるでしょうか?

ttk.Combobox のポップダウンリストには tk.Listbox が用いられていて
Style の対応外です。

root.option_add を用いて指定できます。

python

1 2import tkinter as tk 3from tkinter import ttk 4 5root = tk.Tk() 6root.option_add("*TCombobox*Listbox.font", ("", 20)) 7root.option_add("*TCombobox*Listbox.background", "#eeeeff") 8 9combo = ttk.Combobox(root, values=[1,2,3]) 10combo.pack() 11root.mainloop()

投稿2021/10/28 13:28

編集2021/10/28 13:37
teamikl

総合スコア8760

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

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

saya24

2021/10/28 16:48

teamikleさん いつも迅速かつ的確な御見解 誠にありがとうございます。 ツリービューの行間のピッチ、コンボボックス内の表示設定、及び 一括したButtonとLabelに対するStyleの適用を完了することができました。 ListboxとComboboxは 配置した個々のWidget側で Style ではない方法で適用しました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問