ようなものになるだろうconsolas
import tkFont
my_font = tkFont.Font(family='Consolas', size=15, weight='bold')
# then plug in the font to your widget ...
ようmonospace
のフォントに変更することで固定することができますが、悪い習慣です。前述したようにモノスペースのフォントでしか動作しませんが、は本当にアプリケーション全体でモノスペースフォントを使用したいアラインメントは?私は確かにしません。 Label
をInput
などに変更したい場合はどうすればよいですか?調整のために新しいLabel
を追加する必要がありますか?
したがって、固定幅フォントに変更すると「うまくいく」よりも、Tkが提供するツールを使用する方が良いでしょう。
たとえば、固定幅に最初の列にLabel()
を設定することができます。
import tkinter
# Just some random strings of different sizes from my dictionary
names = ['Algol', 'American', 'Americanises', 'Americanising', 'Americanism',
'Argentine', 'Argentinian', 'Ariz', 'Arizona', 'Armstrong']
root = tkinter.Tk()
tkinter.Label(root, text='Lists:', anchor=tkinter.W).grid(row=0, column=0, sticky=tkinter.W)
for i in range(0, 10):
label_id = tkinter.Label(root, width=30, anchor=tkinter.W, text='Sector %s' % i)
label_name = tkinter.Label(root, anchor=tkinter.W, text=names[i])
label_id.grid(row=i+1, column=0, sticky=tkinter.W)
label_name.grid(row=i+1, column=1, sticky=tkinter.W)
root.mainloop()
はしかし、これを行うにはより多くの方法があります。 columnconfigure
を使用して幅を設定することによって、例えば:
import tkinter
# Just some random strings of different sizes from my dictionary
names = ['Algol', 'American', 'Americanises', 'Americanising', 'Americanism',
'Argentine', 'Argentinian', 'Ariz', 'Arizona', 'Armstrong']
root = tkinter.Tk()
root.columnconfigure(0, minsize=150)
tkinter.Label(root, text='Lists:', anchor=tkinter.W).grid(row=0, column=0, sticky=tkinter.W)
for i in range(0, 10):
label_id = tkinter.Label(root, anchor=tkinter.W, text='Sector %s' % i)
label_name = tkinter.Label(root, anchor=tkinter.W, text=names[i])
label_id.grid(row=i+1, column=0, sticky=tkinter.W)
label_name.grid(row=i+1, column=1, sticky=tkinter.W)
root.mainloop()
columnconfigure()
を使用する利点は、最小幅が列の内容とは無関係であるということです。したがって、後でLabel()
を別のものに変更すると、レイアウトは引き続き機能するはずです。この列の幅を明示的に設定する必要があることはもう少し明らかです。
を。コード自体ではありません – AlanSTACK
ありがとう@Alan。非単位長フォントの問題を解決する方法、単位長フォントを作成する方法について考えていますか? – Hilal
Iveは以下のより完全な答えをどのように行うかを掲載しました。 – AlanSTACK