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

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

ただいまの
回答率

87.78%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 20K+

score 55

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

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

import tkinter
import os
def QuestionBox (mes, filename="none", x=50, y=50, width=900, height=150, title="Question",
                 workdir="C:\temp"):
    result = None
    # Tkクラス生成
    root = tkinter.Tk()
    root.geometry('{}x{}+{}+{}'.format(width, height, x, y))
    root.title(title)
    root.attributes("-topmost", True)
    root.option_add('*font', (u'MS ゴシック', 20))

    # ラベル
    lbl = tkinter.Label(text=mes)
    lbl.place(x=30, y=10)
    lbl.option_add('*justify', ('left'))
    # lbl.option_add('justify','left')


    # テキストボックス
    # txt = tkinter.Entry(width=7, font="u'MS ゴシック', 20, 'bold'", title="Question")
    txt = tkinter.Entry(width=7)
    txt.option_add('*font', (u'MS ゴシック', 20, 'bold'))


    txt.place(x=1150, y=15)
    txt.pack(padx=5, pady=5, anchor=tkinter.SE)
    # txt.insert(tkinter.END, "3")

    def FlagWright():
        nonlocal result
        num = txt.get()
        if filename != "none":
            pathstring = os.path.join(workdir,filename)
            with open(pathstring, 'w', encoding='utf-8') as file:
                file.write(num)
        result = num
        root.quit()

    # button1 = tkinter.Button(root, text='決定', command=lambda: make_cmd(root),
    button1 = tkinter.Button(root, text='決定', width=10, height=2, command=lambda :FlagWright())
    button1.pack(side=tkinter.BOTTOM, padx=5, pady=5, anchor=tkinter.SE)

    root.mainloop()
    # num = txt.get()
    root.quit()
    return result
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/11/28 09:59 編集

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

    のように表示されてしまいます。左揃えに
    11
    2222
    333333
    のような表示になりません……

    キャンセル

  • 2018/11/28 10:06


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

    キャンセル

  • 2018/11/28 10:26 編集

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

    キャンセル

0

おはようございます。

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

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

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

import tkinter
import os


mes = 'アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ'
x = 50
y = 50
width = 900
height = 150
title = "Question"
workdir = "/path_to/"
filename = "xxx.xxx"

# ファイルへentry Widgetの内容を書き込む。


def outputToFile():
    # entry Widgetの内容を取得する。
    output = entry.get()
    # 書き込み先ファイル名を設定。
    pathstring = os.path.join(workdir, filename)
    # ファイルへ内容を書き込む。
    with open(pathstring, 'w', encoding='utf-8') as file:
        file.write(output)
    # Windowを閉じる。
    root.quit()


root = tkinter.Tk()

# Windowへタイトルをつける。
root.title(title)
# Windowの画面サイズを設定する。
# geometryについて : https://kuroro.blog/python/rozH3S2CYE0a0nB3s2QL/
root.geometry('{}x{}+{}+{}'.format(width, height, x, y))
# fontの設定を行う。
root.option_add('font', ('MS ゴシック', 20))

# Windowを親要素として、label Widgetを作成する。
# text : テキスト情報
# wraplength : 文字列の折り返し幅を設定
# justify : 文字列をどちらに揃えるか設定(tkinter.LEFT : 左側, tkinter.RIGHT : 右側, tkinter.CENTER : 中央(デフォルト))
# Labelについて : https://kuroro.blog/python/Pj4Z7JBNRvcHZvtFqiKD/
label = tkinter.Label(root, text=mes, wraplength=90, justify=tkinter.LEFT)
# Windowを親要素として、label Widgetをどのように配置するのか?
# placeについて : https://kuroro.blog/python/JyaHUKyFyxCa0baFfXg0/
label.place(x=30, y=10)

# font内容を変数へ書き込む。
setFont = ('MS ゴシック', 20, 'bold')

# Windowを親要素として、entry Widgetを作成する。
# width : 幅の設定
# font : fontの設定
# Entryについて : https://kuroro.blog/python/PUZp77YFxrXvMCjpZbUg/
entry = tkinter.Entry(root, width=7, font=setFont)
# Windowを親要素として、entry Widgetをどのように配置するのか?
# packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
entry.pack(padx=5, pady=5, anchor=tkinter.SE)

# Windowを親要素として、button Widgetを作成する。
# text : テキスト情報
# width : 幅の設定
# height : 高さの設定
# font : fontの設定
# command : ボタンをクリックした時に、実行する関数を設定
# Buttonについて : https://kuroro.blog/python/oFju6EngDtcYtIiMIDf1/
button = tkinter.Button(root, text='決定', width=10,
                        height=2, font=setFont, command=outputToFile)
# Windowを親要素として、button Widgetをどのように配置するのか?
# packについて : https://kuroro.blog/python/UuvLfIBIEaw98BzBZ3FJ/
button.pack(side=tkinter.BOTTOM, padx=5, pady=5, anchor=tkinter.SE)

# Windowをループさせて、継続的にWindow表示させる。
# mainloopについて : https://kuroro.blog/python/DmJdUb50oAhmBteRa4fi/
root.mainloop()

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る