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

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

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

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

Tkinter

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

Python

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

解決済

pythonのtkinterで改行ができる、テキストボックスを作りたいです。

skysoul
skysoul

総合スコア111

Python 3.x

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

Tkinter

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

Python

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

1回答

1評価

2クリップ

11598閲覧

投稿2020/05/15 11:04

編集2020/05/15 11:06

pythonのtkinterで改行ができる、テキストボックスを作りたいです。

したこと

縦幅を増やしてもうまくいきませんでした。
これがすべてのソースコードです。

python3.8.3rc1

import tkinter from tkinter import filedialog import os import datetime # 画面作成 tki = tkinter.Tk() tki.geometry('900x430') tki.title('とぅりす') # 空リスト作成 todo = [''] * 11 todo_hyouji = [''] * 11 todo_kigen = [datetime.datetime(1,1,1)] * 11 todo_kigen_hyouji = [''] * 11 # 上書き判定初期化 uwa = 0 # ラベル def ref(): global todo global todo_hyouji global todo_kigen global todo_kigen_hyouji lbl_1 = tkinter.Label(text='①                    ') lbl_1.place(x=30, y=70) lbl_1 = tkinter.Label(text='①'+todo_hyouji[0]+' 期限:'+todo_kigen_hyouji[0]) lbl_1.place(x=30, y=70) # リセット・更新 def refresh(): global todo global todo_hyouji global todo_kigen global todo_kigen_hyouji for i in range(10): if todo[i] == '': todo_hyouji[i] = '[追加]' else: todo_hyouji[i] = todo[i] for i in range(10): if todo_kigen[i] == datetime.datetime(1,1,1): todo_kigen_hyouji[i] = 'なし' else: todo_kigen_hyouji[i] = str(todo_kigen[i].year)+'年'+str(todo_kigen[i].month)+'月'+str(todo_kigen[i].day)+'日' ref() # ボタン関数10個 def btn1_click(): global todo global todo_kigen del todo[0] del todo_kigen[0] todo.append('') todo_kigen.append(datetime.datetime(1,1,1)) refresh() def btn11_click(): tki = tkinter.Tk() tki.geometry('200x200') tki.title('①の詳細') # セーブ関数 def btn_save_click(uwagaki) : global todo if uwagaki == 0: typ = [('text file','*.txt')] dir = 'C:/Users' fle = filedialog.asksaveasfilename(initialdir = dir,title = "Save as",filetypes = [("text file","*.txt")]) # 書き込み with open(fle, 'w') as f: for d in todo: f.write("%s\n" % d) for d in todo_kigen: f.write("%s\n" % d) uwa = 1 else: f = open(fle,'w') f.write(todo) f.close() # btn_load_click def btn_load_click(): global todo global todo_kigen typ = [('text file','*.*')] dir = 'C:/Users' fle = filedialog.askopenfilename(filetypes = typ, initialdir = dir) with open(fle) as f: yomikomi = [s.strip() for s in f.readlines()] todo = yomikomi[0:10] todo_kigen = yomikomi[11:21] for i in range (0,10): todo_kigen[i] = datetime.datetime.strptime(todo_kigen[i], '%Y-%m-%d %H:%M:%S') uwa = 1 refresh() # 初期化 refresh() # btn_add_click def btn_add_click(): global todo global todo_kigen if "" in todo: new = todo.index('') todo[new] = txt_1.get() dt = datetime.datetime.now() kigen_year = txt_kigen_year.get() kigen_month = txt_kigen_month.get() kigen_day = txt_kigen_day.get if kigen_year == '' and kigen_month == '' and kigen_day == '': todo_kigen[new] = datetime.datetime(0,0,0) elif kigen_year == '' and kigen_month == '': todo_kigen[new] = datetime.datetime(dt.year, dt.month, int(txt_kigen_day.get()),) elif kigen_month == '' and kigen_day == '': todo_kigen[new] = datetime.datetime(int(txt_kigen_year.get()), 12, 31) elif kigen_year == '': todo_kigen[new] = datetime.datetime(dt.year, int(txt_kigen_month.get()), int(txt_kigen_day.get())) elif kigen_month == '': todo_kigen[new] = datetime.datetime(int(txt_kigen_year.get()), dt.month, int(txt_kigen_day.get())) elif kigen_day == '': todo_kigen[new] = datetime.datetime(int(txt_kigen_year.get()), int(txt_kigen_month.get()), calendar.monthrange(int(txt_kigen_year.get()), int(txt_kigen_month.get))[1]) else: todo_kigen[new] = datetime.datetime(int(txt_kigen_year.get()), int(txt_kigen_month.get()), int(txt_kigen_day.get())) refresh() # DONEボタン btn1 = tkinter.Button(tki, text='DONE', command=btn1_click) btn1.place(x=380, y=70) # 詳細ボタン btn11 = tkinter.Button(tki, text='詳細', command=btn11_click) btn11.place(x=330, y=70) # テキストボックス txt_1 = tkinter.Entry(width=20) txt_1.place(x=70, y=250) # 期限テキストボックス・案内 lbl_kigen = tkinter.Label(text='期限: 年 月   日') lbl_kigen.place(x=205, y=250) txt_kigen_year = tkinter.Entry(width=7) txt_kigen_year.place(x=240, y=250) txt_kigen_month = tkinter.Entry(width=4) txt_kigen_month.place(x=305, y=250) txt_kigen_day = tkinter.Entry(width=4) txt_kigen_day.place(x=350, y=250) # 追加ボタン btn_add = tkinter.Button(tki, text='追加', command=btn_add_click) btn_add.place(x=400, y=250) # セーブ+ボタン btn_save = tkinter.Button(tki, text='SAVE', command=lambda:btn_save_click(uwa)) btn_save.place(x=500, y=250) # ロード+ボタン btn_load = tkinter.Button(tki, text='LOAD', command=btn_load_click) btn_load.place(x=540, y=250) # test txt_shousai = tkinter.Entry(width=50) txt_shousai.place(x=150, y=300, height=100)

重要な部分は最後の2行です。
改行できるようにしたいです。
単純なところ(同じような内容の部分は省略しておきます)

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Python 3.x

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

Tkinter

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

Python

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