Python 获取小部件在展开布局中的位置
我是TkinterGUI的新手,我正在尝试获得入门小部件的位置 我有以下代码Python 获取小部件在展开布局中的位置,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,我是TkinterGUI的新手,我正在尝试获得入门小部件的位置 我有以下代码 import tkinter as tk root = tk.Tk() root.geometry('1200x900') frame = tk.Frame(root) frame.pack(expand=True) text = tk.Entry (frame, text = "test") text.pack(side=tk.LEFT) print(text.winfo_x(),text.winf
import tkinter as tk
root = tk.Tk()
root.geometry('1200x900')
frame = tk.Frame(root)
frame.pack(expand=True)
text = tk.Entry (frame, text = "test")
text.pack(side=tk.LEFT)
print(text.winfo_x(),text.winfo_y())
root.mainloop()
我正在尝试获取text
entry小部件的位置。我使用了winfo_x()
和winfo_y()
,但是我得到了0,0
的位置
我想知道,在上述情况下,如何获得条目相对于根框架的位置
我对此进行了搜索,但没有发现任何类似的问题。我还尝试了winfo_rootx()
和winfo_rooty()
,它们也返回相同的结果
谢谢大家! 直到小部件在屏幕上真正绘制出来,tkinter才知道它的真实位置 一旦它出现在屏幕上,您可以使用
winfo_rootx
和winfo_rooty
获取相对于窗口左上角的坐标
要强制绘制窗口,可以在计算位置之前调用update
import tkinter as tk
root = tk.Tk()
root.geometry('1200x900')
frame = tk.Frame(root)
frame.pack(expand=True)
text = tk.Entry (frame, text = "test")
text.pack(side=tk.LEFT)
root.update()
print(text.winfo_rootx(),text.winfo_rooty())
root.mainloop()
也许这能帮你。
为您提供以下格式的结果:
宽×高+xpos+ypos
import tkinter as tk
root = tk.Tk()
root.geometry('500x700+145+100')
frame = tk.Frame(root)
frame.place(x=50, y=50)
text = tk.Entry (root, text = "test")
text.place(x=10, y=43)
root.update_idletasks()
tst=text.winfo_geometry()
lab= tk.Label(root, text=tst)
lab.place(x=30, y=100)
root.mainloop()
尝试根据需要对其进行自定义。在创建tkinter gui时很少需要这些数据。你能详细说明一下你为什么需要这些信息吗?我过去经常调用
.after()
,现在我找到了一个好方法@jizhaosama:后
是更好的通用解决方案。一般来说,你不应该调用update
,除非你必须这样做。但是,在mainloop
启动之前这样做是安全的。