【问题标题】:Tkinter's overrideredirect() behaving oddly (Python 3.2, Win7)Tkinter 的 overrideredirect() 行为异常(Python 3.2,Win7)
【发布时间】:2012-12-10 19:06:43
【问题描述】:

我希望我的应用程序使用没有框架的Toplevel 窗口,但是当我在创建顶层后立即尝试使用overrideredirect 时,它根本不显示。如果我单独调用overrideredirect,例如按下一个按钮,为最后创建的Toplevel 调用它,它会按预期工作。 这种行为是否出于某种目的,或者至少是明智的?我该如何解决?

【问题讨论】:

  • 你能给我们一个展示这种行为的示例程序吗?你所说的正在发生的事情不是预期的行为,我不记得以前有人注意到这一点。
  • 你的Toplevel不就是在你的程序创建的另一个窗口下吗?如果你提高它会发生什么?例如,查看pastebin.com/A5D7RpWa 的示例。
  • 我遇到了同样的问题,只要将 overriderredirect(True) 添加到我的代码中,窗口就不再显示。如果我删除它,它会按预期工作,但我想摆脱标题栏。
  • 更多信息。我正在尝试制作一个没有标题栏的模式窗口。当我删除“self.toplevel.transient(root)”和“self.toplevel.grab_set()”行时,overrideredirect 开始工作,但我失去了我的模态窗口。

标签: python tkinter


【解决方案1】:

找到一个链接,为我解决了他的问题。

http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/toplevel.html

一定要调用 .update_idletasks() 方法(参见第 26 节, “通用小部件方法”)在设置此标志之前。如果你叫它 在进入主循环之前,您的窗口将在它之前被禁用 曾经出现过。

【讨论】:

    【解决方案2】:

    我在使用 Python 3.6.1 和 tcl/tk 8.5.18 的 macOS 10.12.5 上遇到了同样的问题(请参阅 this question)。正如上面 cmets 中所建议的,在调用 .overrideredirect(True) 之后立即在顶层窗口上调用 .lift() 对我来说解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多