2013-07-01 55 views
2

下一個在How to make a Tkinter window jump to the front?讓Tkinter的跳到前方 - 但只是相對的Tkinter程序

問我想有一個頂層窗口(我用它來瀏覽我的其他主窗口)的一個問題總是在前面。 但是我希望它只在我的tkinter程序的各個窗口的前面。

chwin.wm_attributes("-topmost",True)解決方案將此窗口強制放置在桌面的每個窗口之上(至少在這裏:Linux fedora13)。

你知道任何其他解決方案嗎?

回答

2

最後,lift()方法調用無法正常工作。當我使用它並覆蓋窗口時,我想保持在最前面,這個調用只是讓窗口的圖標在任務欄中突出顯示(就像在不可見窗口中有某些動作時發生的那樣),但窗口沒有解除。

Linux小故障?我不知道

我終於發現了一個辦法做到這一點:只要致電wm_transient從具有留在上面的窗口:

secondarywindow.wm_transient(root) 

這樣,secondarywindow始終高於,但它可以被我在桌面上使用的任何其他程序遮擋

1

你可以在新窗口中的每個創建後解除你想要的窗口:

import Tkinter as tk 
root = tk.Tk() 
tk.Label(root, text="I'm the root").grid() 
main = tk.Toplevel(root) 
tk.Label(main, text="I'm the one you want").grid() 
def bring_to_front(): 
    """This function was made to demonstrate""" 
    tk.Toplevel(root) 
    # Each time a new window is created, lift the one you want above it. 
    main.lift() 
    root.after(5000, bring_to_front) 
root.after(1, bring_to_front) 
root.mainloop() 

通知你想始終窗口如何保持專注(位於頂部),不管有多少Toplevels製成。儘管如此,它不會超出其他應用程序(僅限於腳本創建的窗口)。

你甚至可以使用的Topleveliconify方法你不想在上面,現在每個窗口最小化。

請注意,我在Python 2.7中對此進行了處理。如果你沒有/使用Python,只需應用其他地方的腳本中給出的原則。