在Tkin上显示全屏模式

2024-05-28 20:33:46 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在全屏模式下制作Tkinter显示器中的帧?我看到了这个代码,它非常有用

>>> import Tkinter
>>> root = Tkinter.Tk()
>>> root.overrideredirect(True)
>>> root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(), root.winfo_screenheight()))

…但是否可以编辑代码,以便按Esc键自动使窗口“还原”?


Tags: 代码importtrueformattkinter模式root显示器
3条回答

我认为如果你只想全屏,不需要设置几何或最大尺寸等

你只需要这样做:

-如果你在ubuntu上工作:

root=tk.Tk()
root.attributes('-zoomed', True)

-如果你在windows上工作:

root.state('zoomed')

现在,为了在全屏之间切换,为了将其最小化到任务栏,您可以使用:

Root.iconify()

这将创建一个全屏窗口。默认情况下,按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()

我想这就是你要找的:

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.

相关问题 更多 >

    热门问题