Окно tkinter получает x, y, геометрию/координаты без верхней части окна

Я использую tk в python (3), хотя я предполагаю, что это относится к любому языку. Я хочу получить текущие координаты x, y окна tk за пределами строки заголовка:

import tkinter  
root = tkinter.Tk()

однако использование root.winfo_y() дает мне координаты, включая глубину заголовка. Для окна, которое находится в верхнем левом углу моего экрана:

root.winfo_x(), root.winfo_y()          # returns (0, 22)

Другими словами, запуск:

root.geometry('+{}+{}'.format(root.winfo_x(), root.winfo_y()))

будет перемещать окно вниз на 22 пикселя (высота строки заголовка) каждый раз, когда я его вызываю. Как я могу получить фактические координаты всего окна?


person gnr    schedule 16.11.2012    source источник
comment
Я не уверен, но winfo_rootx() и winfo_rooty() могут быть тем, что вы ищете.   -  person Edu    schedule 17.11.2012
comment
да, я пробовал, тот же эффект :(   -  person gnr    schedule 17.11.2012


Ответы (1)


В Tkinter большинство функций конфигурации при использовании без аргументов нового значения возвращают текущие значения. Таким образом, root.geometry() (плюс парсинг нескольких строк) может служить вашей цели.

person FabienAndre    schedule 17.11.2012
comment
да это то что я искал! В качестве примечания, root.winfo_x(), root.winfo_y() я думаю, что обычно должен возвращать те же координаты, что и root.geometry(), однако проблема, с которой я столкнулся, заключается в том, что я использую 2 монитора под управлением OSX, а тот, что справа, - мой «домашний» монитор с панелью файлов который находится в самом верху экрана. Однако использование root.geometry() решает мои проблемы, спасибо! - person gnr; 17.11.2012