Отображение полноэкранного режима на Tkinter - PullRequest
37 голосов
/ 01 ноября 2011

Как сделать рамку на дисплее Tkinter в полноэкранном режиме? Я видел этот код, и он очень полезен ...:

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

… но можно ли отредактировать код так, чтобы при нажатии Esc автоматически появлялось окно «Восстановить вниз»?

Ответы [ 4 ]

65 голосов
/ 24 мая 2014

Я думаю, это то, что вы ищете:

Tk.attributes("-fullscreen", True)  # substitute `Tk` for whatever your `Tk()` object is called

Вы также можете использовать wm_attributes вместо attributes.

Затем просто свяжите клавишу escape идобавьте это к обработчику:

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.
27 голосов
/ 01 ноября 2011

Это создает полноэкранное окно.При нажатии 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()
11 голосов
/ 29 января 2017

Я думаю, что если вы ищете только полноэкранный режим, вам не нужно устанавливать геометрию или максимальный размер и т. Д.

Вам просто нужно сделать это:

-Если вы работаете в Ubuntu:

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

-и если вы работаете с окнами:

root.state('zoomed')

Теперь для переключения между полноэкранными режимами, для минимизации на панель задач вы можете использовать:

Root.iconify()
7 голосов
/ 11 февраля 2017

Это создаст полностью полноэкранное окно на Mac (без видимой строки меню) без путаницы клавиш

import tkinter as tk
root = tk.Tk()

root.overrideredirect(True)
root.overrideredirect(False)
root.attributes('-fullscreen',True)


root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...