【发布时间】:2020-12-12 23:58:57
【问题描述】:
我正在编写一个程序,其中大部分用户交互发生在 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 命令行保持焦点?
【问题讨论】:
-
很奇怪,现在您的示例以预期的方式为我工作 - 即使,十分钟前,它显示了您报告的问题.我在中间尝试的唯一另一件事是为
withdraw调用添加延迟:root_window.after(1, lambda: root_window.withdraw())。延迟参数为零时,它似乎也能按预期工作,但现在我不确定究竟是什么改变了这种行为。 -
你为什么在这里使用 tkinter?也许有办法从那里绕过
-
AFAIK tkinter 不能处理这个问题,你需要使用一个额外的库来跟踪它,比如 ctypes。但是为什么不使用条目呢? stackoverflow.com/q/30512267
-
试着说
root.attributes('-topmost',False)也一定要说root.mainloop()并告诉我 -
@Hans,我不知道怎么做,但 10 毫秒的延迟似乎对我有用。谢谢!