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

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

解決済

1回答

23472閲覧

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

skysoul

総合スコア111

Python 3.x

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

Tkinter

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

Python

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

1グッド

2クリップ

投稿2020/05/15 11:04

編集2020/05/15 11:06

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

したこと

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

python3.8.3rc1

1import tkinter 2from tkinter import filedialog 3import os 4import datetime 5 6# 画面作成 7tki = tkinter.Tk() 8tki.geometry('900x430') 9tki.title('とぅりす') 10 11# 空リスト作成 12todo = [''] * 11 13todo_hyouji = [''] * 11 14todo_kigen = [datetime.datetime(1,1,1)] * 11 15todo_kigen_hyouji = [''] * 11 16 17# 上書き判定初期化 18uwa = 0 19 20# ラベル 21def ref(): 22 global todo 23 global todo_hyouji 24 global todo_kigen 25 global todo_kigen_hyouji 26 lbl_1 = tkinter.Label(text='①                    ') 27 lbl_1.place(x=30, y=70) 28 29 lbl_1 = tkinter.Label(text='①'+todo_hyouji[0]+' 期限:'+todo_kigen_hyouji[0]) 30 lbl_1.place(x=30, y=70) 31 32# リセット・更新 33def refresh(): 34 global todo 35 global todo_hyouji 36 global todo_kigen 37 global todo_kigen_hyouji 38 for i in range(10): 39 if todo[i] == '': 40 todo_hyouji[i] = '[追加]' 41 else: 42 todo_hyouji[i] = todo[i] 43 for i in range(10): 44 if todo_kigen[i] == datetime.datetime(1,1,1): 45 todo_kigen_hyouji[i] = 'なし' 46 else: 47 todo_kigen_hyouji[i] = str(todo_kigen[i].year)+'年'+str(todo_kigen[i].month)+'月'+str(todo_kigen[i].day)+'日' 48 ref() 49 50# ボタン関数10個 51def btn1_click(): 52 global todo 53 global todo_kigen 54 del todo[0] 55 del todo_kigen[0] 56 todo.append('') 57 todo_kigen.append(datetime.datetime(1,1,1)) 58 refresh() 59 60def btn11_click(): 61 tki = tkinter.Tk() 62 tki.geometry('200x200') 63 tki.title('①の詳細') 64 65 66# セーブ関数 67def btn_save_click(uwagaki) : 68 global todo 69 if uwagaki == 0: 70 typ = [('text file','*.txt')] 71 dir = 'C:/Users' 72 fle = filedialog.asksaveasfilename(initialdir = dir,title = "Save as",filetypes = [("text file","*.txt")]) 73 # 書き込み 74 with open(fle, 'w') as f: 75 for d in todo: 76 f.write("%s\n" % d) 77 for d in todo_kigen: 78 f.write("%s\n" % d) 79 uwa = 1 80 else: 81 f = open(fle,'w') 82 f.write(todo) 83 f.close() 84 85# btn_load_click 86def btn_load_click(): 87 global todo 88 global todo_kigen 89 typ = [('text file','*.*')] 90 dir = 'C:/Users' 91 fle = filedialog.askopenfilename(filetypes = typ, initialdir = dir) 92 with open(fle) as f: 93 yomikomi = [s.strip() for s in f.readlines()] 94 todo = yomikomi[0:10] 95 todo_kigen = yomikomi[11:21] 96 for i in range (0,10): 97 todo_kigen[i] = datetime.datetime.strptime(todo_kigen[i], '%Y-%m-%d %H:%M:%S') 98 uwa = 1 99 refresh() 100 101# 初期化 102refresh() 103 104# btn_add_click 105def btn_add_click(): 106 global todo 107 global todo_kigen 108 if "" in todo: 109 new = todo.index('') 110 todo[new] = txt_1.get() 111 dt = datetime.datetime.now() 112 kigen_year = txt_kigen_year.get() 113 kigen_month = txt_kigen_month.get() 114 kigen_day = txt_kigen_day.get 115 if kigen_year == '' and kigen_month == '' and kigen_day == '': 116 todo_kigen[new] = datetime.datetime(0,0,0) 117 elif kigen_year == '' and kigen_month == '': 118 todo_kigen[new] = datetime.datetime(dt.year, dt.month, int(txt_kigen_day.get()),) 119 elif kigen_month == '' and kigen_day == '': 120 todo_kigen[new] = datetime.datetime(int(txt_kigen_year.get()), 12, 31) 121 elif kigen_year == '': 122 todo_kigen[new] = datetime.datetime(dt.year, int(txt_kigen_month.get()), int(txt_kigen_day.get())) 123 elif kigen_month == '': 124 todo_kigen[new] = datetime.datetime(int(txt_kigen_year.get()), dt.month, int(txt_kigen_day.get())) 125 elif kigen_day == '': 126 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]) 127 else: 128 todo_kigen[new] = datetime.datetime(int(txt_kigen_year.get()), int(txt_kigen_month.get()), int(txt_kigen_day.get())) 129 refresh() 130 131 132# DONEボタン 133btn1 = tkinter.Button(tki, text='DONE', command=btn1_click) 134btn1.place(x=380, y=70) 135 136 137# 詳細ボタン 138btn11 = tkinter.Button(tki, text='詳細', command=btn11_click) 139btn11.place(x=330, y=70) 140 141# テキストボックス 142txt_1 = tkinter.Entry(width=20) 143txt_1.place(x=70, y=250) 144 145# 期限テキストボックス・案内 146lbl_kigen = tkinter.Label(text='期限: 年 月   日') 147lbl_kigen.place(x=205, y=250) 148 149txt_kigen_year = tkinter.Entry(width=7) 150txt_kigen_year.place(x=240, y=250) 151 152txt_kigen_month = tkinter.Entry(width=4) 153txt_kigen_month.place(x=305, y=250) 154 155txt_kigen_day = tkinter.Entry(width=4) 156txt_kigen_day.place(x=350, y=250) 157 158# 追加ボタン 159btn_add = tkinter.Button(tki, text='追加', command=btn_add_click) 160btn_add.place(x=400, y=250) 161 162# セーブ+ボタン 163btn_save = tkinter.Button(tki, text='SAVE', command=lambda:btn_save_click(uwa)) 164btn_save.place(x=500, y=250) 165 166# ロード+ボタン 167btn_load = tkinter.Button(tki, text='LOAD', command=btn_load_click) 168btn_load.place(x=540, y=250) 169 170# test 171txt_shousai = tkinter.Entry(width=50) 172txt_shousai.place(x=150, y=300, height=100)

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

DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

複数行の入力には tkinter.Texttkinter.scrolledtext.ScrolledText を使います

python

1import tkinter as tk 2from tkinter.scrolledtext import ScrolledText 3root = tk.Tk() 4text = ScrolledText(root, font=("", 15), height=5, width=40) 5text.pack() 6root.mainloop()

height, width は文字数で、font size 次第で大きさが変わります。


投稿2020/05/15 11:25

編集2020/05/15 11:38
teamikl

総合スコア8664

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問