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

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

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

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

Tkinter

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

Q&A

解決済

1回答

2093閲覧

tkinterのmessageboxを初期表示するとEntryが入力不可になってしまう

MitsuoOhsawa

総合スコア3

Python 3.x

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

Tkinter

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

0グッド

0クリップ

投稿2021/02/17 02:58

画面の初期表示時にメッセージボックスを表示して、
内容を確認してからentryに入力したい。

発生している問題・エラーメッセージ

メッセージボックスを閉じるとentryが入力不可になってしままいます。
しかし、一度フォーカスを別ウィンドウへ外すと入力できるようになります。
entryの入力不可を回避するにはどうすればよいでしょうか。

該当のソースコード

python

1from tkinter import * 2import tkinter.ttk as ttk 3import tkinter.messagebox as messagebox 4 5app = Tk() 6app.geometry("400x50") 7app.title("Title") 8Frame = ttk.Frame(app, padding=16) 9Entry = ttk.Entry(Frame, width=50) 10Entry.insert(END, u'初期表示するメッセージ') 11Frame.pack() 12Entry.pack() 13 14messagebox.showinfo("infomation message", "OKを押すとEntryが入力できない。\n一度他のウインドウにフォーカスを逃がせば入力できる。") 15app.mainloop() 16

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

問題の原因: Tkinter のメッセージ・ダイアログ関数は、
Tkinter のウィジェットと独立して使えるように設計されてますが、
初期化処理(tkinter.Tk())やイベントループ(mainloop)といった準備部分に相当する処理が、
暗黙のうちに行われます。

自前で、tkinter.Tk()/mainloop() を呼び出す場合は、
これらが競合しないように配慮し、

「初期表示時にメッセージボックスを表示」は、mainloop() から呼び出されるように
タイマーに登録すると良いです。

python

1# ダイアログ表示前にメインウィンドウを表示したい場合、一度だけ描画更新する。 2# app.update_idletasks() 3 4# タイマーに登録。lambda: 以降の式が mainloop 内から実行される 5app.after_idle(lambda: messagebox.showinfo( 6 "infomation message", 7 "OKを押すとEntryが入力できない。\n一度他のウインドウにフォーカスを逃がせば入力できる。")) 8 9app.mainloop()

投稿2021/02/17 05:49

teamikl

総合スコア8760

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

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

MitsuoOhsawa

2021/02/17 05:59

ありがとうございます。 教えていただいた方法で解決することが出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問