gpt4 book ai didi

python - 激活 Tkinter Toplevel

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:46 27 4
gpt4 key购买 nike

我正在尝试制作一个 Toplevel 小部件,它是屏幕上的事件窗口(我想要它,这样如果您按 Enter,它就会退出窗口。我已经将键绑定(bind)到小部件,但我似乎无法让窗口成为​​我计算机上的主窗口。我正在使用 Notepad++ 运行我的程序(我有这个特定程序的快捷方式,因为我将使用它很多)。

这是我的代码:

def main():
root = Tk(className = ' Module Opener')
app = GetFileName(root)
root.rowconfigure(0, weight = 1)
root.columnconfigure(0, weight = 1)
root.bind('<Return>', (lambda e, b=app.goButton: b.invoke()))
root.mainloop()
f, pythonType = app.fileName, app.pythonType
if f[-3:] != '.py': f += '.py'
moduleFile = getFilePath(f, pythonType)
if not moduleFile is None:
subprocess.call([r"C:\Program Files\Notepad++\notepad++.exe", moduleFile])
else:
root.withdraw()
finalRoot = Toplevel(root)
finalRoot.grab_set() # I thought this would make it active
finalApp = FileNotExist(finalRoot, f)
finalRoot.rowconfigure(0, weight = 1)
finalRoot.columnconfigure(0, weight = 1)
finalRoot.bind('<Return>', (lambda e, b=finalApp.okButton: b.invoke()))
finalRoot.mainloop()

我希望它在打开时,如果我按 Enter,它会执行我的命令;但是,我必须先在窗口中单击以激活它,然后它才能工作。

我尝试了各种方法,例如 finalRoot.lift()finalRoot.focus_set()finalRoot.grab_set()/finalRoot.grab_set_global()(我从 another question 中看到了这些方法)和 finalRoot.focus()

程序启动时,第一个窗口 Tk() 处于事件状态。但是,Toplevel() 不是。我还尝试制作两个 Tk()(销毁 root 然后创建 finalRoot 作为新的 Tk() 实例),但这也不起作用。我怎样才能做到这一点?谢谢!

最佳答案

...however, I have to click in the window first so that it becomes active, and then it works.

我刚遇到这个问题,在研究解决方案时,我发现了这个线程。我正在使用 Windows 7 专业版。我所做的就是调用 both grab_set()focus(),它解决了我的问题。您已经有了 finalRoot.grab_set(),只需添加:

finalRoot.focus()

它在我的案例中有效。

关于python - 激活 Tkinter Toplevel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16083491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com