繁体   English   中英

无法在tkinter窗口python上退出全屏

[英]Cant exit fullscreen on tkinter window python

我试图使该窗口全屏显示,然后可以使用任意键进行转义。 我不能将转义键绑定到实际转义窗口,也无法从其他类似的帖子中找出问题出在哪里。

这是代码:

import tkinter as tk
from tkinter import *

root=Tk()

root.overrideredirect(True)
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
root.focus_set()
root.bind("<Escape>", lambda e: root.quit())

#mybuttonsandframesgohere

root.mainloop()

在某些系统(例如Linux)上, root.overrideredirect(True)删除了显示边框的窗口管理(WM),但WM还将键/鼠标事件从系统发送到程序。 如果WM不发送事件,则您的程序不知道您单击了ESC。

这对我在Linux Mint(基于Ubuntu和Debian)上有效。 Rasbian基于Debian。

import tkinter as tk

def close_escape(event=None):
    print("escaped")
    root.destroy()

root = tk.Tk()

root.overrideredirect(True)
root.overrideredirect(False)

root.attributes("-fullscreen", True)
root.wm_attributes("-topmost", 1)
root.focus_set()

root.bind("<Escape>", close_escape)

root.after(5000, root.destroy) # close after 5s if `ESC` will not work

root.mainloop()

我仅将root.after(5000, root.destroy)进行测试-如果ESC无法正常工作,则在5秒后将其关闭。

我仅使用close_escape来查看它是被ESC还是after()关闭。 如果代码有效,则可以使用root.bind("<Escape>", lambda event:root.destroy())

import tkinter as tk

root = tk.Tk()

root.overrideredirect(True)
root.overrideredirect(False)

root.attributes("-fullscreen", True)
root.wm_attributes("-topmost", 1)
root.focus_set()

root.bind("<Escape>", lambda event:root.destroy())

root.mainloop()

顺便说一句:您也可以在没有root.overrideredirect()情况下尝试-也许它将对您root.overrideredirect()

import tkinter as tk

root = tk.Tk()

root.attributes("-fullscreen", True)
root.wm_attributes("-topmost", 1) # keep on top
#root.focus_set()

root.bind("<Escape>", lambda event:root.destroy())

root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM