【问题标题】:Prevent a Python Tkinter window from being closed (including Alt+F4)防止关闭 Python Tkinter 窗口(包括 Alt+F4)
【发布时间】:2019-12-02 00:32:44
【问题描述】:

我正在构建一个 Tkinter 应用程序,它会要求用户在使用计算机之前设置密码。因此,它需要是不可关闭的,包括禁用Alt+F4

我尝试过使用root.protocol("WM_DELETE_WINDOW", preventClose),其中preventClose 是一个函数(如下所示)。 注意:这不是override alt-f4 closing tkinter window in python 3.6 and replace it with something else 的重复。我想要一个完全不可关闭的窗口,而不仅仅是重新映射 Alt+F4

这是我尝试使用preventClose函数的方法:

def preventClose():
    pass

还有这个 Tkinter 协议:

root.protocol("WM_DELETE_WINDOW", preventClose)

这无法像Unclosable window using tkinter 中描述的那样禁用 Alt+F4

我没有看到任何错误消息,但 Alt+F4 并没有像我希望的那样被禁用。

一些基本信息:

  • Windows 10 家庭版 64 位
  • Python 3.7

【问题讨论】:

  • 在 Windows 上似乎有问题,因为它在 Linux Mint 上正常工作。
  • WM_DLELTE_WINDOW - 你拼错了 delete。
  • @HenryYik,非常感谢!我不敢相信我忽略了这一点!

标签: python python-3.x tkinter window python-3.7


【解决方案1】:

哇,好的,在这里发现了一个关于差异问题的东西

from tkinter import *

root = Tk()

pressed_f4 = False  # Is Alt-F4 pressed?

def do_exit():
    global pressed_f4
    print('Trying to close application')
    if pressed_f4:  # Deny if Alt-F4 is pressed
        print('Denied!')
        pressed_f4 = False  # Reset variable
    else:
        close()     # Exit application

def alt_f4(event):  # Alt-F4 is pressed
    global pressed_f4
    print('Alt-F4 pressed')
    pressed_f4 = True

def close(*event):  # Exit application
    root.destroy()

root.bind('<Alt-F4>', alt_f4)
root.bind('<Escape>', close)
root.protocol("WM_DELETE_WINDOW",do_exit)

root.mainloop()

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多