Почему widget.winfo_rootx () и widget.winfo_rootx () всегда равны 0 в tkinter? - PullRequest
0 голосов
/ 03 июня 2018

Вот мой код:

from tkinter import *

root = Tk()
a = Button(text=str(1))
a.place(x=100, y=100)
widget_x, widget_y = a.winfo_rootx(), a.winfo_rooty()
print(widget_x, widget_y)
root.mainloop()

Выход всегда 0 0.Почему это и как я могу это исправить?

1 Ответ

0 голосов
/ 03 июня 2018

Значение равно нулю, потому что вы получаете координаты до того, как окно стало видимым.Вы можете решить эту проблему одним из двух способов: не получать координаты до тех пор, пока не начнется 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...