【发布时间】:2013-04-18 12:51:51
【问题描述】:
我正在尝试制作一个Toplevel 小部件,它是屏幕上的活动窗口(我想要它,这样如果你按下 Enter,它就会退出窗口。我已经绑定了键到小部件,但我似乎无法让窗口成为我计算机上的主窗口。我正在使用 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() 实例),但这也不起作用。我怎样才能做到这一点?谢谢!
【问题讨论】: