Tkinterルートウィンドウがフォーカスを引き継ぐのを防ぐ方法は?

Aug 24 2020

私はほとんどのユーザー操作がWindowsコマンドラインで行われるプログラムを書いていますが、いくつかのファイルとディレクトリの選択ダイアログにはTkinterを使用しています。

.pyファイルをクリックしてプログラムを起動すると(IDLEでは問題は発生しません)、コマンドラインが起動し、Tkルートウィンドウがインスタンス化されると、コマンドラインからフォーカスを引き継ぎます。この動作には、コマンドラインウィンドウに戻るためにユーザーによる追加のアクションが必要です。

これは、問題を再現するためのコードサンプルです。

from tkinter import Tk
root_window = Tk()
root_window.withdraw()
name = input("Enter your name:\n")
print("Nice to meet you, " + name)

Windowsコマンドラインにフォーカスを保つにはどうすればよいですか?

回答

1 Hans Aug 25 2020 at 14:12

不思議なことに、あなたの例は意図した方法で私のために機能します-10分前にあなたが報告した問題を示していたとしても。その間に試した他の唯一のことは、撤回呼び出しに待ち時間を追加することでした。

root_window.after(1, lambda: root_window.withdraw())

レイテンシ引数がゼロの場合も意図したとおりに機能するように見えましたが、動作が正確に何が変わったのかわかりません。