2013-02-28 315 views
1

我有一個tkinter python 2.x程序。我有幾個窗口出現在屏幕上。我使用按鈕從一個導航到另一個導航,但我正在努力關閉一個窗口並重新關注當前打開的窗口。我可以打開新的窗戶!tkinter給窗口焦點

#code for main window 
def frmMain(): 
    app = Tk() 
    app.title("TWS: XML Options") 
    app.geometry("200x100") 
    bn1 = Button(app,text="Add", command=frmAdd) 
    bn1.grid(row = 2,column = 2, stick = W) 
    bn2 = Button(app,text="Edit", command=frmEdit) 
    bn2.grid(row = 2,column = 3, stick = W) 
    bn3 = Button(app,text="Delete", command=frmDelete) 
    bn3.grid(row = 2,column = 4, stick = W) 
    bn4 = Button(app,text="Back",command=frmMenu) 
    bn4.grid(row = 3,column = 2, stick = W) 
    app.mainloop() 

#code for button on sub window 
.... 
bn1 = Button(app,text="Back", command=back) 
... 

def back(): 
    #Code to close current window and reopen frmMain 

回答

1

只需在窗口小部件的父級上調用destroy()即可。

bn1 = Button(app, text="Back", command=app.destroy) 

我想你不會破壞父窗口,所以一旦頂層被破壞,焦點自動返回到先前打開的窗口。

+0

如果有5個窗口打開,並且有一個表單將它們連接在一起,那麼如何將焦點放在特定的窗口而不是最後一個打開的窗口上? – pluke 2013-02-28 22:34:35

+0

然後你需要對特定窗口的引用,然後在銷燬當前窗口之前調用'mywindow.focus_set()'。 – 2013-02-28 23:01:42

+0

如何在上面的代碼中獲得對frmMain的引用?像myWindow = get.title(「TWS:XML選項」) – pluke 2013-03-01 11:41:49

0

A TopLevel Window可以使用其deiconify()方法激活。

使用基本的小工具方法focus_set()將鍵盤焦點設置爲特定的小部件。

+0

在OSX上沒有適用於我。我也嘗試過'focus_force()',這也不起作用。我可能會訴諸於平臺特定的解決方案,使這項工作在OSX上。 – ArtOfWarfare 2014-09-19 20:51:03