2014-09-30 180 views
1

如何在不使用overrideredirect的情況下刪除TopLevel的邊框?Python Tkinter:刪除窗口邊框

TopLevel.overrideredirect(True) 

如果可以提供示例代碼將會很好。

的Python 2.7.3,Linux的,Tkinter的版本$修訂:$ 81008

+0

你有overrideredirect什麼問題?它存在的原因正是你要求的 - 刪除窗口管理器邊框。 – 2014-09-30 02:23:09

+0

嗯,我做了一個進度條,並通過使用overrideredirect它隱藏邊框。但是,當我執行TopLevel.transient(parentWindow)時,它不起作用。我使用瞬態的原因是因爲我想盡量減少進度條,一旦其父母被最小化。但是,如果overrideredirect設置爲True,則使用TopLevel.transient(parentWindow)不會執行任何操作 – 2014-09-30 02:27:24

+0

可以使用與Windows WinAPI相當的Linux嗎? – Fenikso 2014-09-30 13:28:53

回答

2

隨着布萊恩·奧克利的幫助下,我已經實現了一個解決辦法,讓我用「overrideredirect」,而解決我的問題,那正在使用'Unmap'事件。

下面的示例代碼顯示,當附加窗口可以與主窗口中使用「地圖」和「取消映射」時,可以最小化:

import Tkinter 
class App: 
    def __init__(self): 
     self.root = Tkinter.Tk() 
     Tkinter.Label(self.root, text="main window").pack() 
     self.window = Tkinter.Toplevel() 
     self.window.overrideredirect(True) 
     Tkinter.Label(self.window, text="Additional window").pack() 
     self.root.bind("<Unmap>", self.OnUnMap) 
     self.root.bind("<Map>", self.OnMap) 
     self.root.mainloop() 
    def OnMap(self, e): 
     self.window.wm_deiconify() 
    def OnUnMap(self, e): 
     self.window.wm_withdraw() 
app=App()