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

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

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

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

Tkinter

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

Q&A

解決済

2回答

2878閲覧

tkinterでscrolledtextを実装したい

Eston

総合スコア67

Python 3.x

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

Tkinter

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

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

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

0グッド

0クリップ

投稿2020/10/31 11:10

編集2020/10/31 12:44

いつもお世話になっております。
現在、Tkinterの練習として、GUIアプリを作成しているのですが、scrolledtextを配置できず、苦心しています。

Python3もTkinterも、久しぶりに触るので、うろ覚えかも知れませんが、ご存知の方がいらっしゃれば、ご教授お願いします。

エラー:
Undefined variable 'scrolledtext'pylint(undefined-variable)

参考にしたサイト

コンソールでのエラー表示

Python3

1# Creating tkinter main window 2win = tk.Tk() 3win.title("ScrolledText Widget") 4 5# Title Label 6ttk.Label(win, 7 text = "ScrolledText Widget Example", 8 font = ("Times New Roman", 15), 9 background = 'green', 10 foreground = "white").grid(column = 0, 11 row = 0) 12 13# Creating scrolled text 14# area widget 15text_area = scrolledtext.ScrolledText(win, 16 wrap = tk.WORD, 17 width = 40, 18 height = 10, 19 font = ("Times New Roman", 20 15)) 21 22text_area.grid(column = 0, pady = 10, padx = 10)

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

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

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

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

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

guest

回答2

0

参考のサイトのコードをそのままコピーで動くはずです。
画像に掲載の NameError に関しては、モジュールのimport忘れが考えられます。

python

1from tkinter import scrolledtext

掲載のコードをそのまま実行すると scrolledtext ではなく
NameError: name 'tk' is not defined となるので、
他にもコードが不足してます。

コピー範囲の選択ミスだと思いますが、
「参考のサイト」のコードの左上のアイコン「Copy Code」からコピーしてみてください。

投稿2020/10/31 12:01

teamikl

総合スコア8664

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

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

Eston

2020/10/31 12:13

すいません、言葉が足りませんでした、まるまるコピペするのではなくて、既存のコードにScrollTextの部分だけを追加したいのです。ご指摘の通り、Importを追加して実行したのですが、実行はできても画面に表示されません。コードの全容を質問に追加致します。
Eston

2020/10/31 12:20

追記失礼いたします。おそらく別な質問として一度整理したほうが良い考え、一旦ベストアンサーとさせていただきます。解答ありがとうございます。
Eston

2020/10/31 12:22 編集

import tkinter as tk from tkinter import scrolledtext from tkinter import * from tkinter import ttk from tkinter import scrolledtext # Generate Window root = tk.Tk() # title root.title('Hotel New World') # Window Size root.geometry("800x300") #MinSixe #root.minsize(500, 500) #make Window grid 1x1 # root.grid_rowconfigure(0, weight=1) root.grid_columnconfigure(0, weight=1) frame1 = tk.Frame(root, width=1000, height=1000, relief='flat', borderwidth=1) frame1.grid(row=0, column=0, sticky=(tk.W, tk.E)) frame1.grid_columnconfigure(0, weight=1) frame1.grid_columnconfigure(1, weight=2) frame1.grid_columnconfigure(2, weight=1) frame1.grid_columnconfigure(3, weight=2) frame1.grid_columnconfigure(4, weight=1) frame1.grid_columnconfigure(5, weight=1) # Create Menu menubar = tk.Menu(root) # FileMenu filemenu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label='File', menu=filemenu) # filemenu.add_command(label='Import', command=lambda : changePage(frame1)) filemenu.add_command(label='Import') filemenu.add_command(label='Export Data') filemenu.add_separator() # close button ok filemenu.add_command(label='Quit Application', command=lambda: root.destroy()) # HelpMenu helpmenu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label='Help', menu=helpmenu) helpmenu.add_command(label='About Application') helpmenu.add_command(label='Developer Information') # Display Menu root.config(menu=menubar) label_name = tk.Label(frame1, text="Name", font=('', 10, "bold")) label_name.grid(row=0, column=0) entry_name = tk.Entry(frame1) entry_name.grid(row=0, column=1, sticky=(tk.W, tk.E)) label_country = tk.Label(frame1, text="Country", font=('', 10, "bold")) label_country.grid(row=0, column=2) entry_country = tk.Entry(frame1) entry_country.grid(row=0, column=3, columnspan=2, sticky=(tk.W, tk.E)) label_passport = tk.Label(frame1, text="Passport", font=('', 10, "bold")) label_passport.grid(row=1, column=0) entry_passport = tk.Entry(frame1) entry_passport.grid(row=1, column=1, sticky=(tk.W, tk.E)) label_gender = tk.Label(frame1, text="Gender", font=('', 10, "bold")) label_gender.grid(row=1, column=2) var = tk.IntVar() tk.Radiobutton(frame1, text="Male", variable=var, value=1).grid(row=1, column=3) tk.Radiobutton(frame1, text="Female", variable=var, value=2).grid(row=1, column=4) label_from = tk.Label(frame1, text="From", font=('', 10, "bold")) label_from.grid(row=2, column=0) entry_from_start = tk.Entry(frame1) entry_from_start.grid(row=2, column=1, sticky=(tk.W, tk.E)) label_to = tk.Label(frame1, text="to", font=('', 10, "bold")) label_to.grid(row=2, column=2) entry_to_end = tk.Entry(frame1) entry_to_end.grid(row=2, column=3, columnspan=2, sticky=(tk.W, tk.E)) label_accomondation_type = tk.Label(frame1, text="Accomondation Type", font=('', 10, "bold")) label_accomondation_type.grid(row=3, column=0) menu_accom = tk.OptionMenu(frame1, 'Accomondations', 'Male Dorm', 'Female Form', 'Doble Room', 'Single Room') menu_accom.config(width=20) menu_accom.grid(row=3, column=1, sticky=(tk.W, tk.E)) btn_book = tk.Button(frame1, text='Book Now', width=10) btn_book.grid(row=4, column=4, sticky=tk.E) btn_search = tk.Button(frame1, text='Search Entry', width=10) btn_search.grid(row=5, column=4, sticky=tk.E) btn_update = tk.Button(frame1, text='Update Entry', width=10) btn_update.grid(row=6, column=4, sticky=tk.E) btn_all = tk.Button(frame1, text='View All Entry', width=10) btn_all.grid(row=7, column=4, sticky=tk.E) btn_delete = tk.Button(frame1, text='Delete Selected Entry', width=10) btn_delete.grid(row=8, column=4, sticky=tk.E) btn_quit = tk.Button(frame1, text='Quit Application', width=10,command=lambda: root.destroy()) btn_quit.grid(row=9, column=4, sticky=tk.E) # Title Label ttk.Label(root, text = "ScrolledText Widget Example", font = ("Times New Roman", 15), background = 'green', foreground = "white").grid(column = 0, row = 0) # Creating scrolled text # area widget text_area = scrolledtext.ScrolledText(root, wrap = tk.WORD, width = 40, height = 10, font = ("Times New Roman", 15)) text_area.grid(column = 0, pady = 10, padx = 10) # Placing cursor in the text area text_area.focus() # ウィンドウ表示 root.mainloop()
Eston

2020/10/31 12:22

他の閲覧者のための追記↑
teamikl

2020/10/31 12:26

> 実行はできても画面に表示されません。 質問の上のコードでしたら、mainloop等も抜け落ちてます。 これについては、参考のサイトのコードがそのまま答えなので、コピペ範囲の選択ミスだと思います。 追加で掲載されたコードは、実行すると、 _tkinter.TclError: cannot use geometry manager pack inside . which already has slaves managed by grid とでますが、ScrollText に取り掛かる前に、先に他の部問題を修正する必要があります。 レイアウトで grid() と pack() を混在して使っているのがエラーの原因です。 また、別問題ですが、 tk.Tk() のインスタンスは、一つのプログラム内で複数作ると問題になりやすいので、 2つ以上のウィンドウを作りたい場合は、tk.Toplevel の利用を検討してください。
teamikl

2020/10/31 12:33 編集

あれ、質問に掲載されてるコードとコメント内のコードが違ってませんか? 質問のコードには root1 などが記述されてます。 (別の問題の原因になってます)
teamikl

2020/10/31 12:33

質問のコードではなく、2つ上のコメントのコードを実行したところ、 正常に実行でき ScrolledText も表示されました。 後は、レイアウトの問題でしょうか?
Eston

2020/10/31 12:43

返信ありがとうございます root1の方は、あくまでも問題として追加しました コメントの方は、自己解決の形で載せました、その方が将来的に閲覧する人にとってわかりやすいかと思いました。
guest

0

自己解決

レイアウトに問題はありますが、ScrollTextは実装できました

Python3

1import tkinter as tk 2from tkinter import scrolledtext 3from tkinter import * 4from tkinter import ttk 5from tkinter import scrolledtext 6 7# Generate Window 8root = tk.Tk() 9# title 10root.title('Hotel New World') 11# Window Size 12root.geometry("800x300") 13#MinSixe 14#root.minsize(500, 500) 15#make Window grid 1x1 16# root.grid_rowconfigure(0, weight=1) 17root.grid_columnconfigure(0, weight=1) 18 19frame1 = tk.Frame(root, width=1000, height=1000, 20 relief='flat', borderwidth=1) 21frame1.grid(row=0, column=0, sticky=(tk.W, tk.E)) 22frame1.grid_columnconfigure(0, weight=1) 23frame1.grid_columnconfigure(1, weight=2) 24frame1.grid_columnconfigure(2, weight=1) 25frame1.grid_columnconfigure(3, weight=2) 26frame1.grid_columnconfigure(4, weight=1) 27frame1.grid_columnconfigure(5, weight=1) 28 29# Create Menu 30menubar = tk.Menu(root) 31 32# FileMenu 33filemenu = tk.Menu(menubar, tearoff=0) 34menubar.add_cascade(label='File', menu=filemenu) 35# filemenu.add_command(label='Import', command=lambda : changePage(frame1)) 36filemenu.add_command(label='Import') 37filemenu.add_command(label='Export Data') 38filemenu.add_separator() 39# close button ok 40filemenu.add_command(label='Quit Application', command=lambda: root.destroy()) 41 42# HelpMenu 43helpmenu = tk.Menu(menubar, tearoff=0) 44menubar.add_cascade(label='Help', menu=helpmenu) 45helpmenu.add_command(label='About Application') 46helpmenu.add_command(label='Developer Information') 47 48# Display Menu 49root.config(menu=menubar) 50 51 52label_name = tk.Label(frame1, text="Name", font=('', 10, "bold")) 53label_name.grid(row=0, column=0) 54 55entry_name = tk.Entry(frame1) 56entry_name.grid(row=0, column=1, sticky=(tk.W, tk.E)) 57 58label_country = tk.Label(frame1, text="Country", font=('', 10, "bold")) 59label_country.grid(row=0, column=2) 60 61entry_country = tk.Entry(frame1) 62entry_country.grid(row=0, column=3, columnspan=2, sticky=(tk.W, tk.E)) 63 64label_passport = tk.Label(frame1, text="Passport", font=('', 10, "bold")) 65label_passport.grid(row=1, column=0) 66 67entry_passport = tk.Entry(frame1) 68entry_passport.grid(row=1, column=1, sticky=(tk.W, tk.E)) 69 70label_gender = tk.Label(frame1, text="Gender", font=('', 10, "bold")) 71label_gender.grid(row=1, column=2) 72var = tk.IntVar() 73tk.Radiobutton(frame1, text="Male", variable=var, value=1).grid(row=1, column=3) 74tk.Radiobutton(frame1, text="Female", variable=var, value=2).grid(row=1, column=4) 75 76label_from = tk.Label(frame1, text="From", font=('', 10, "bold")) 77label_from.grid(row=2, column=0) 78 79entry_from_start = tk.Entry(frame1) 80entry_from_start.grid(row=2, column=1, sticky=(tk.W, tk.E)) 81 82label_to = tk.Label(frame1, text="to", font=('', 10, "bold")) 83label_to.grid(row=2, column=2) 84 85entry_to_end = tk.Entry(frame1) 86entry_to_end.grid(row=2, column=3, columnspan=2, sticky=(tk.W, tk.E)) 87 88label_accomondation_type = tk.Label(frame1, text="Accomondation Type", font=('', 10, "bold")) 89label_accomondation_type.grid(row=3, column=0) 90 91menu_accom = tk.OptionMenu(frame1, 'Accomondations', 'Male Dorm', 'Female Form', 'Doble Room', 'Single Room') 92menu_accom.config(width=20) 93menu_accom.grid(row=3, column=1, sticky=(tk.W, tk.E)) 94 95btn_book = tk.Button(frame1, text='Book Now', width=10) 96btn_book.grid(row=4, column=4, sticky=tk.E) 97 98btn_search = tk.Button(frame1, text='Search Entry', width=10) 99btn_search.grid(row=5, column=4, sticky=tk.E) 100 101btn_update = tk.Button(frame1, text='Update Entry', width=10) 102btn_update.grid(row=6, column=4, sticky=tk.E) 103 104btn_all = tk.Button(frame1, text='View All Entry', width=10) 105btn_all.grid(row=7, column=4, sticky=tk.E) 106 107btn_delete = tk.Button(frame1, text='Delete Selected Entry', width=10) 108btn_delete.grid(row=8, column=4, sticky=tk.E) 109 110btn_quit = tk.Button(frame1, text='Quit Application', width=10,command=lambda: root.destroy()) 111btn_quit.grid(row=9, column=4, sticky=tk.E) 112 113 114 115# Title Label 116ttk.Label(root, 117 text = "ScrolledText Widget Example", 118 font = ("Times New Roman", 15), 119 background = 'green', 120 foreground = "white").grid(column = 0, 121 row = 0) 122 123# Creating scrolled text 124# area widget 125text_area = scrolledtext.ScrolledText(root, 126 wrap = tk.WORD, 127 width = 40, 128 height = 10, 129 font = ("Times New Roman", 130 15)) 131 132text_area.grid(column = 0, pady = 10, padx = 10) 133 134# Placing cursor in the text area 135text_area.focus() 136 137# ウィンドウ表示 138root.mainloop()

投稿2020/10/31 12:45

Eston

総合スコア67

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問