python - 在展开布局中获取小部件位置
问题描述
我是 tkinter GUI 的新手,我正在尝试获取条目小部件的位置。
我有以下代码
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
条目小部件的位置。我使用winfo_x()
and winfo_y()
,但我得到了0,0
.
我想知道在上述情况下如何获取条目相对于根框架的位置?
我已经对此进行了搜索,但没有发现任何类似的问题。我也试过winfo_rootx()
and 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()
推荐阅读
- javascript - “未定义条带”错误 - 在加载脚本之前调用函数?
- java - 将多个数组保存在字符串中
- php - 如何使用 php 下载包含所有详细信息的音频文件
- sql-server - 在 Amazon RDS 上创建 SQL Server 数据库的 .bak 备份时出现权限错误
- python - 使从 boost-python 类继承的 Python 类可复制
- java - 可以在不与封闭类的实例关联的情况下使用非静态成员类型吗?
- c# - 如何在字符串中查找两列不同表中的公用名称?
- c++ - 如何通过函数指针调用派生方法?
- c# - 类型错误:samAccount IdentityType 必须采用以下形式
- python - 用多行作为一个字符串填充字典