Как узнать ширину окна tkinter без обновления? - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу центрировать окно tkinter на экране, что можно сделать с помощью:

root.geometry(f"+{(root.winfo_screenwidth()-root.winfo_width())//2}+"
              f"{(root.winfo_screenheight()-root.winfo_height())//2}")

Это использует ширину экрана и ширину окна для вычисления верхнего левого угла. Однако, чтобы узнать ширину окна, мне нужно запустить root.update(), что приведет к тому, что окно будет отображаться в неправильном положении в течение крошечного момента.

Чтобы избежать этого, я могу вспомнить два решения:

  • определение размера окна в пикселях, что означает, что размер окна больше не регулируется автоматически, и

  • делает что-то вроде root.update() без видимого окна, хотя я все равно не могу себе представить способ получения его размера.

1 Ответ

0 голосов
/ 14 апреля 2020

То, что вы ищете, это root.withdraw() и root.deiconify().

Первое будет скрывать ваше окно, а второе покажет его.

Я включил полный пример ниже.

from tkinter import Tk

def show_it():
    height = root.winfo_height()
    width = root.winfo_width()

    root.geometry(f"+{(s_width - width)//2}+"
              f"{(s_height - height)//2}")
    # show it again
    root.deiconify()

root = Tk()

s_height = root.winfo_screenheight()
s_width = root.winfo_screenwidth()

root.withdraw()

# hide the window
root.after(200, show_it)

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