在 Tkinter 上显示全屏模式
- 2025-03-05 09:16:00
- admin 原创
- 65
问题描述:
如何在 Tkinter 中以全屏模式显示框架?我看到了这段代码,它非常有用……:
>>> import Tkinter
>>> root = Tkinter.Tk()
>>> root.overrideredirect(True)
>>> root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))
…但是是否可以编辑代码以便 Esc
自动点击使窗口“恢复向下”?
解决方案 1:
我想这就是你要找的东西:
Tk.attributes("-fullscreen", True) # substitute `Tk` for whatever your `Tk()` object is called
您也可以使用wm_attributes
来代替attributes
。
然后只需绑定退出键并将其添加到处理程序中:
Tk.attributes("-fullscreen", False)
另一个问题的答案提到了这一点(带有wm_attributes
)。所以,这就是我发现的。但是,出于某种原因,没有人直接说这是答案。所以,我认为值得发布。
下面是一个工作示例(在 Xubuntu 14.04 上测试),使用 F11 来打开或关闭全屏,而 escape 只会将其关闭:
import sys
if sys.version_info[0] == 2: # Just checking your Python version to import Tkinter properly.
from Tkinter import *
else:
from tkinter import *
class Fullscreen_Window:
def __init__(self):
self.tk = Tk()
self.tk.attributes('-zoomed', True) # This just maximizes it so we can see the window. It's nothing to do with fullscreen.
self.frame = Frame(self.tk)
self.frame.pack()
self.state = False
self.tk.bind("<F11>", self.toggle_fullscreen)
self.tk.bind("<Escape>", self.end_fullscreen)
def toggle_fullscreen(self, event=None):
self.state = not self.state # Just toggling the boolean
self.tk.attributes("-fullscreen", self.state)
return "break"
def end_fullscreen(self, event=None):
self.state = False
self.tk.attributes("-fullscreen", False)
return "break"
if __name__ == '__main__':
w = Fullscreen_Window()
w.tk.mainloop()
如果你也想隐藏菜单,我发现只有两种方法可以做到这一点。一种是销毁它。另一种是创建一个空白菜单以供切换。
self.tk.config(menu=self.blank_menu) # self.blank_menu is a Menu object
然后,当您希望它再次出现时,将其切换回菜单。
self.tk.config(menu=self.menu) # self.menu is your menu.
解决方案 2:
这将创建一个全屏窗口。按Escape
默认将窗口大小调整为“200x200+0+0”。如果移动或调整窗口大小,Escape
则会在当前几何图形和上一个几何图形之间切换。
import Tkinter as tk
class FullScreenApp(object):
def __init__(self, master, **kwargs):
self.master=master
pad=3
self._geom='200x200+0+0'
master.geometry("{0}x{1}+0+0".format(
master.winfo_screenwidth()-pad, master.winfo_screenheight()-pad))
master.bind('<Escape>',self.toggle_geom)
def toggle_geom(self,event):
geom=self.master.winfo_geometry()
print(geom,self._geom)
self.master.geometry(self._geom)
self._geom=geom
root=tk.Tk()
app=FullScreenApp(root)
root.mainloop()
解决方案 3:
我认为如果您只寻求全屏,则无需设置几何或最大尺寸等。
你只需要这样做:
-如果你正在使用 ubuntu:
root=tk.Tk()
root.attributes('-zoomed', True)
-如果你在 Windows 上工作:
root.state('zoomed')
现在要在全屏之间切换,将其最小化到任务栏,您可以使用:
Root.iconify()
解决方案 4:
这是一个使用 lambda 的简单解决方案:
root = Tk()
root.attributes("-fullscreen", True)
root.bind("<F11>", lambda event: root.attributes("-fullscreen",
not root.attributes("-fullscreen")))
root.bind("<Escape>", lambda event: root.attributes("-fullscreen", False))
root.mainloop()
这将使屏幕在按下 Esc 键时退出全屏,并在按下 F11 键时切换全屏。
解决方案 5:
这将在 Mac 上创建一个完全全屏的窗口(没有可见的菜单栏),而不会弄乱按键绑定
import tkinter as tk
root = tk.Tk()
root.overrideredirect(True)
root.overrideredirect(False)
root.attributes('-fullscreen',True)
root.mainloop()
解决方案 6:
是的,伙计,我也试图在 Windows 上做同样的事情,对我有帮助的是方法中的一些 lambda root.state()
。
root = Tk()
root.bind('<Escape>', lambda event: root.state('normal'))
root.bind('<F11>', lambda event: root.state('zoomed'))
解决方案 7:
使用window.state('zoomed')
:
# importing tkinter for gui
import tkinter as tk
window = tk.Tk()
window.state('zoomed') # <<<< this
window.title("Full window")
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD