Значение равно нулю, потому что вы получаете координаты до того, как окно стало видимым.Вы можете решить эту проблему одним из двух способов: не получать координаты до тех пор, пока не начнется mainloop (с after_idle
), или заставить окно рисовать на экране, вызвав update
.
Пример:
from tkinter import *
root = Tk()
a = Button(text=str(1))
a.place(x=100, y=100)
root.update()
widget_x, widget_y = a.winfo_rootx(), a.winfo_rooty()
print(widget_x, widget_y)
root.mainloop()