首页 > 解决方案 > 在处理过程中是否可以切换 tkinter 根窗口?

问题描述

对于我的 NEA,我正在尝试编写自己的程序,通过这个程序,我希望能够打开尽可能少的窗口,因此我希望能够将第一个根窗口切换到备用窗口。当发生这种情况时,我希望它关闭并替换根窗口,但我无法弄清楚如何做到这一点。是否可以关闭根窗口并在处理过程中切换它?

标签: pythontkinter

解决方案


这是否符合您的要求?按 F1 键在 Tk 窗口之间切换。按 Escape 或单击关闭按钮以关闭两者。

import tkinter

def windowlink( o, f, title = 'Window' ):
    o.title( string = title )
    o.protocol( 'WM_DELETE_WINDOW', f )
    b = o.bind( '<KeyRelease-Escape>', f )

master_A = tkinter.Tk( )
master_A.withdraw()
master_A.geometry( '281x200+380+153' )

master_B = tkinter.Tk( )
master_B.withdraw()
master_B.geometry( '281x200+380+153' )


def closer( ev = None ):
    master_A.destroy()
    master_B.destroy()

def switchAB( ev = None ):
    master_A.withdraw()
    master_B.deiconify()
    master_B.focus_set()

def switchBA( ev = None ):
    master_B.withdraw()
    master_A.deiconify()
    master_A.focus_set()

windowlink( master_B, closer, title= 'Window_B' )
tkinter.Button( master_B, text = 'Switch window', command = switchBA ).grid( row=0, column=0, sticky='nsew' )

windowlink( master_A, closer, title= 'Window_A' )
tkinter.Button( master_A, text = 'Switch window', command = switchAB ).grid( row=0, column=0, sticky='nsew' )


master_B.deiconify()
master_B.focus_set()

tkinter.mainloop()

推荐阅读