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()
また、 を 2 つ作成(破棄してから新しいインスタンスとしてroot
作成)しようとしましたが、これも同様に機能しませんでした。これどうやってするの?ありがとう!finalRoot
Tk()