【问题标题】:Python 2.7 Tkinter on close functionPython 2.7 Tkinter 关闭函数
【发布时间】:2015-11-11 10:04:03
【问题描述】:

我正在制作一个小应用程序,当达到特定条件时,它会使用 Tkinter 打开一个盒子。

我不想用这些框向用户发送垃圾邮件,所以我希望 tkinter 在启动时将变量设置为 True,然后在关闭时将其设置回 False。

我正在制作一个关闭网站检查器/通知器,因此一旦网站恢复正常,您就会看到一个弹出框让您知道。现在,如果您关闭该框,代码将继续,该框将再次弹出。然而真正的问题是代码不会在后台继续运行。

如果我让代码在满足条件的每 5 秒内继续在后台运行,则会弹出另一个框并最终向用户发送垃圾邮件,这是我不想要的。

有没有办法检查是否有打开的 tkinter 框,或者在按下关闭按钮(或 X 按钮)时将值设置为 false ?

【问题讨论】:

    标签: python-2.7 tkinter


    【解决方案1】:

    您可以重新定义关闭按钮的作用:

    win = Toplevel()
    win.protocol('WM_DELETE_WINDOW', close(win))
    
    def close(window):
      window.withdraw()
      someboolean = False
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      可以为WM_DELETE_WINDOW注册回调函数(窗口即将被删除)

      示例 1:

      top = Toplevel()
      
      def on_close(t):
          flag = False
      
      t.protocol("WM_DELETE_WINDOW", on_close)
      

      您还可以覆盖destroy 函数:

      示例 2:

      class CustomToplevel(Toplevel):
          def destroy(self):
              # Add you code here
              Toplevel.destroy(self)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-06
        • 2018-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 2016-11-06
        相关资源
        最近更新 更多