【问题标题】:Remove window title bar in TKinter Python在 TKinter Python 中删除窗口标题栏
【发布时间】:2013-01-04 00:41:16
【问题描述】:

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

【问题讨论】:

  • 您是否需要在您发布的最后一行代码中实际调用pack? Listbox(Toplevel(...).pack()) 实际上,您正在传递一个方法,其中 Tkinter 需要 Widget。我不确定当您尝试运行该程序时它实际上会做什么,但无论如何它都不会是您希望它执行的操作...

标签: python tkinter


【解决方案1】:

看这条线

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

很明显,您尝试在 1 行上做太多WAY。 (你的括号甚至不匹配)。我们分手吧,好吗?

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)
  • 然后你在根部件上使用.grid 和.pack 会导致你的程序挂起。

【讨论】:

  • 一切正常!非常感谢。我将所有内容都换成了 .pack 并按照您的代码进行操作,现在一切正常。谢谢!
  • @user1161439 -- 太好了!很高兴能提供帮助。请注意,如果您非常小心不要将pack 和grid 放在同一帧/顶层(我相信),您可能不需要将所有内容切换到pack。只是您遇到的挂起可能是在同一个小部件上使用.grid 和.pack 的结果(Tk 最有可能)并且发生这种情况是因为您试图一次做太多事情。我不建议创建一个小部件并将其放在同一行中——我认为它不会使代码更易于阅读,但在某些情况下我想它可能没问题......
猜你喜欢
  • 2016-01-04
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-13
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 2021-11-20
相关资源
最近更新 更多