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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

Python

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

Q&A

解決済

2回答

19301閲覧

tkinterのラベルの文字を左詰に表示する方法が分からない。

Aki1000

総合スコア78

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

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

Python

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

1グッド

0クリップ

投稿2018/11/23 05:39

編集2018/11/23 05:44

tkinterのラベルの文字を左詰に表示する方法が分からりません。

google検索してみると、'justify'というオプションで'left'を指定する旨いくつかのサイトに書いてあるのですが、以下のmesという引数で受けたテキストをラベルに表示するコードでどうしても、テキストが中央揃えになってしまいます。左詰に表示したいのですが、どうしたらいいでしょう? 

Python

1import tkinter 2import os 3def QuestionBox (mes, filename="none", x=50, y=50, width=900, height=150, title="Question", 4 workdir="C:\temp"): 5 result = None 6 # Tkクラス生成 7 root = tkinter.Tk() 8 root.geometry('{}x{}+{}+{}'.format(width, height, x, y)) 9 root.title(title) 10 root.attributes("-topmost", True) 11 root.option_add('*font', (u'MS ゴシック', 20)) 12 13 # ラベル 14 lbl = tkinter.Label(text=mes) 15 lbl.place(x=30, y=10) 16 lbl.option_add('*justify', ('left')) 17 # lbl.option_add('justify','left') 18 19 20 # テキストボックス 21 # txt = tkinter.Entry(width=7, font="u'MS ゴシック', 20, 'bold'", title="Question") 22 txt = tkinter.Entry(width=7) 23 txt.option_add('*font', (u'MS ゴシック', 20, 'bold')) 24 25 26 txt.place(x=1150, y=15) 27 txt.pack(padx=5, pady=5, anchor=tkinter.SE) 28 # txt.insert(tkinter.END, "3") 29 30 def FlagWright(): 31 nonlocal result 32 num = txt.get() 33 if filename != "none": 34 pathstring = os.path.join(workdir,filename) 35 with open(pathstring, 'w', encoding='utf-8') as file: 36 file.write(num) 37 result = num 38 root.quit() 39 40 # button1 = tkinter.Button(root, text='決定', command=lambda: make_cmd(root), 41 button1 = tkinter.Button(root, text='決定', width=10, height=2, command=lambda :FlagWright()) 42 button1.pack(side=tkinter.BOTTOM, padx=5, pady=5, anchor=tkinter.SE) 43 44 root.mainloop() 45 # num = txt.get() 46 root.quit() 47 return result 48
PythonNINJYA👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

justify は複数行の文字列がある場合に、文字をどこで揃えるかを決定するためのオプションです。
単にラベル内のどこに文字を配置するかを決定するには anchor オプションを使用してください

# ラベル lbl = tkinter.Label(text=mes, anchor="w") # 左よせ

投稿2018/11/26 23:51

magichan

総合スコア15898

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

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

Aki1000

2018/11/27 11:30

うーん、この方法だと中央揃えのままです…… lbl = tkinter.Label(text=mes, anchor="w") としたのですが……
magichan

2018/11/27 23:19

だめですか・・。 もしかすると、単に Labelの横幅が指定されてい無い為、Labalの横幅と文字列の幅が同じになっているので、右寄せや左寄せが意味を持たないだけかもしれません。 試しに、Labelの引数に bg='pink' などを指定して Labelの大きさを確認してみてください。その上で widthでの横幅を指定とanchorでの配置指定をすると効果が見えるかと思います。
magichan

2018/11/27 23:21 編集

一応こんな感じです lbl = tkinter.Label(text=mes, bg='pink', width=30) or lbl = tkinter.Label(text=mes, bg='pink', width=30, anchor="w") or lbl = tkinter.Label(text=mes, bg='pink', width=30, anchor="e")
Aki1000

2018/11/28 01:01 編集

うーん、だめですね。確かに上記のようにwとかeで指定すると、ボックス内でテキストがまとまりとしては左、右に移動するのですが、例えば 11 2222 333333 というテキストを表示すると   11   2222  333333 のように表示されてしまいます。左揃えに 11 2222 333333 のような表示になりません……
magichan

2018/11/28 01:06

ん テキストが複数行あるのでしたら、それは 質問でも触れております justify で調整することになります。ですので lbl = tkinter.Label(text=mes, bg='pink', width=30, anchor='e', justify='left') で良いかと思います
Aki1000

2018/11/28 01:27 編集

ありがとうこざいますっっっ 出来ました!!!! いやあ、 lbl.option_add('*justify', ('left')) とか lbl.option_add('justify','left') とか試してみたんですけど、まったく効かなかったのでjustifyダメなのかと思ってました……
guest

0

おはようございます。

問題文読ませていただきました。

wraplength, justify optionを利用すると、うまくいきそうです。

こんな感じでいかがでしょうか?

python

1import tkinter 2import os 3 4 5mes = 'アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ' 6x = 50 7y = 50 8width = 900 9height = 150 10title = "Question" 11workdir = "/path_to/" 12filename = "xxx.xxx" 13 14# ファイルへentry Widgetの内容を書き込む。 15 16 17def outputToFile(): 18 # entry Widgetの内容を取得する。 19 output = entry.get() 20 # 書き込み先ファイル名を設定。 21 pathstring = os.path.join(workdir, filename) 22 # ファイルへ内容を書き込む。 23 with open(pathstring, 'w', encoding='utf-8') as file: 24 file.write(output) 25 # Windowを閉じる。 26 root.quit() 27 28 29root = tkinter.Tk() 30 31# Windowへタイトルをつける。 32root.title(title) 33# Windowの画面サイズを設定する。 34# geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/ 35root.geometry('{}x{}+{}+{}'.format(width, height, x, y)) 36# fontの設定を行う。 37root.option_add('font', ('MS ゴシック', 20)) 38 39# Windowを親要素として、label Widgetを作成する。 40# text : テキスト情報 41# wraplength : 文字列の折り返し幅を設定 42# justify : 文字列をどちらに揃えるか設定(tkinter.LEFT : 左側, tkinter.RIGHT : 右側, tkinter.CENTER : 中央(デフォルト)) 43# Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/ 44label = tkinter.Label(root, text=mes, wraplength=90, justify=tkinter.LEFT) 45# Windowを親要素として、label Widgetをどのように配置するのか? 46# placeについて : https://kuroro.blog/python/JyaHUKyFyxCa0baFfXg0/ 47label.place(x=30, y=10) 48 49# font内容を変数へ書き込む。 50setFont = ('MS ゴシック', 20, 'bold') 51 52# Windowを親要素として、entry Widgetを作成する。 53# width : 幅の設定 54# font : fontの設定 55# Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/ 56entry = tkinter.Entry(root, width=7, font=setFont) 57# Windowを親要素として、entry Widgetをどのように配置するのか? 58# packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 59entry.pack(padx=5, pady=5, anchor=tkinter.SE) 60 61# Windowを親要素として、button Widgetを作成する。 62# text : テキスト情報 63# width : 幅の設定 64# height : 高さの設定 65# font : fontの設定 66# command : ボタンをクリックした時に、実行する関数を設定 67# Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/ 68button = tkinter.Button(root, text='決定', width=10, 69 height=2, font=setFont, command=outputToFile) 70# Windowを親要素として、button Widgetをどのように配置するのか? 71# packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/ 72button.pack(side=tkinter.BOTTOM, padx=5, pady=5, anchor=tkinter.SE) 73 74# Windowをループさせて、継続的にWindow表示させる。 75# mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/ 76root.mainloop()

ご確認のほど、よろしくお願いいたします。????‍♂️

投稿2021/06/14 23:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問