我有这个,但它删除了所有按钮。与 overideredirent(True) 不同,它确实允许 alt-tabbing:
hwnd = windll.user32.GetParent(self.root.winfo_id())
style = windll.user32.GetWindowLongA(hwnd, -16) # GWL_STYLE
WS_MINIMIZEBOX = 0x20000
WS_MAXIMIZEBOX = 0x10000
WS_SYSMENU = 0x80000
new_style = style | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
new_style = new_style & ~WS_SYSMENU
windll.user32.SetWindowLongA(hwnd, -16, new_style)
self.root.update_idletasks()
有什么想法吗?
根据这个答案,没有直接的方法来禁用关闭按钮,但是您可以覆盖
protocol
的处理程序WM_DELETE_WINDOW
,以便在单击关闭按钮时不执行任何操作。这是一个快速工作示例:
import tkinter as tk
root = tk.Tk()
root.protocol('WM_DELETE_WINDOW', 'break') # tell the Close button to do nothing
# optional quit button
btn_close = tk.Button(root, command=root.quit, text='Quit')
btn_close.pack()
if __name__ == '__main__':
root.mainloop()
我添加了一个“退出”按钮,这样您就不会被窗口困住,但您已经明白了。
也就是说,虽然这有效,但它也违反了 POLA,因为关闭按钮在技术上并未被禁用。它看起来仍然一样并且仍然可以交互 - 它只是不再做任何事情。