我正在尝试创建一个
我希望在打开窗口时,如果按下 Enter 键,它能够执行我的命令; 然而,我必须先点击窗口使其变为活动状态,然后才能起作用。
我尝试了各种方法,例如
当程序开始运行时,第一个窗口
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()
(我从另一个问题中得到这些方法),以及 finalRoot.focus()
。当程序开始运行时,第一个窗口
Tk()
是活动的。但是,Toplevel()
不是。我还尝试过创建两个 Tk()
(销毁 root
,然后创建 finalRoot
作为新的 Tk()
实例),但这也不起作用。请问该怎么做呢?谢谢!
.focus_force()
而不是.focus()
。 - bart cubrich