Подтвердить что ты не робот

Показать полноэкранный режим на Tkinter

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

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

но возможно ли, когда я нажму Esc, автоматически "Восстановить" окно? Вероятно, это очень сложный код, справка pls.

4b9b3361

Ответ 1

Это создает полноэкранное окно. Нажатие 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()

Ответ 2

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

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 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.

Ответ 3

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

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

-Если вы работаете над ubuntu:

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

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

root.state('zoomed')

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

Root.iconify()

Ответ 4

Это создаст полностью полноэкранное окно на маке (без видимой строки меню) без испорчения клавиш.

import tkinter as tk
root = tk.Tk()

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


root.mainloop()