2

如何从 Tkinter 的 Toplevel() 窗口中删除标题栏。现在我主要我有

    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 上只打开一个没有标题栏的列表框?谢谢

4

1 回答 1

2

看着这条线

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

很明显,您试图在 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 返回无
  • Listbox 将 None 视为父窗口小部件并替换根窗口小部件 ( Tk)
  • 然后你在根小部件上使用.gridand .pack,这会导致你的程序挂起。
于 2013-01-04T01:28:37.123 回答