2013-01-04 42 views
2

如何從Tkinter中的Toplevel()窗口中刪除標題欄。 現在我爲我主我有刪除TKinter中的窗口標題欄Python

self.master.title("Subtest") 
    self.master.geometry("400x200") 



    self.alertwindow() 


    Label(self.master,textvariable=self.connected,height=4).grid(row=0,column=0) 


    Button(self.master,text="Monitor",command= lambda: self.startnewthread(1),width=10).grid(row=6,column=1) 
    Button(self.master,text="Quit",command=self.haltprogram).grid(row=6,column=0) 

而對於我的警告窗口功能我有

def alertwindow(self): 
self.listbox=Listbox(Toplevel(self.master,width=150).overrideredirect(True),width=150).pack) 

我是想在程序中打開了一個根窗口,然後在頂層列表框中沒有標題欄;然而,該程序現在唯一正在做的就是凍結,當我刪除.overrideredirect(True)時,程序將啓動兩個列表框窗口。我怎樣才能讓程序在Windows上打開一個沒有標題欄的列表框?由於

+0

您是否需要在發佈的最後一行代碼中實際調用'pack'? 'Listbox(Toplevel(...)。pack())''就這樣,你傳遞了一個方法,'Tkinter'需要一個'Widget'。我不確定當你嘗試運行這個程序時它會做些什麼*但是這不會是你想要它在任何情況下做的事情...... – mgilson

回答

2

望着這條線

self.listbox=Listbox(Toplevel(self.master,width=150).overrideredirect(True),width=150).pack) 

,很明顯你正在試圖做WAY 1線太多。 (你的括號甚至不匹配)。讓我們分解一下吧?

new_top = Toplevel(self.master,width=150) 
new_top.overrideredirect(True) 
self.listbox = Listbox(new_top,width=150) 
self.listbox.pack() 

另外請注意,你似乎可以用.grid.pack - 一般是病了建議和Tkinter會愉快地度過永恆的試圖通過談判的小工具的正確放置當您嘗試同時使用它們。


我對所發生的事情的猜測:

  • 實際代碼具有適當的平衡括號所以不存在的SyntaxError
  • Toplevel.overrideredirct返回無
  • 列表框中沒有看到作爲父控件和替換根部件(Tk
  • 然後,您在根wi上使用.grid.pack dget導致程序掛起。
+0

一切正常!非常感謝。我將所有內容都換成了.pack,並遵循了你的代碼,現在一切正常。謝謝! – user1161439

+0

@ user1161439 - 太好了!很高興有幫助。請注意,如果你非常小心在同一個框架/頂層('相信)上不包裝'和'網格',你可能不需要把所有東西都切換到'pack'。只是你遇到的問題可能是在同一個小部件上使用'.grid'和'.pack'(最有可能是'Tk'),而這種情況發生是因爲你一次嘗試做得太多。我不建議創建一個小部件並將它放在同一行中 - 我不覺得它使代碼更易於閱讀,但在某些情況下,它可能會好起來,我想...... – mgilson