Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取小部件在展开布局中的位置_Python_Tkinter_Tkinter Entry - Fatal编程技术网

Python 获取小部件在展开布局中的位置

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

我是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.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
启动之前这样做是安全的。