【问题标题】:tkinter window get x, y, geometry/coordinates without top of windowtkinter 窗口在没有窗口顶部的情况下获取 x、y、几何/坐标
【发布时间】:2012-11-16 21:22:27
【问题描述】:

我在 python (3) 中使用 tk,尽管我假设这适用于任何语言。我正在寻找标题栏外 tk 窗口的当前 x、y 坐标:

import tkinter  
root = tkinter.Tk()

然而,使用root.winfo_y() 可以得到包括标题栏深度在内的坐标。对于屏幕左上角的窗口:

root.winfo_x(), root.winfo_y()          # returns (0, 22)

换句话说,运行:

root.geometry('+{}+{}'.format(root.winfo_x(), root.winfo_y()))

每次调用时都会将窗口向下移动 22 像素(标题栏的高度)。如何获取整个窗口的实际坐标?

【问题讨论】:

  • 我不确定,但 winfo_rootx() 和 winfo_rooty() 可能是您正在寻找的。​​span>
  • 是的,我试过了,同样的效果:(

标签: python user-interface python-3.x tkinter tk


【解决方案1】:

在 Tkinter 中,大多数配置函数在没有新值参数的情况下使用时会返回当前值。因此root.geometry()(加上一些字符串解析)可以达到您的目标。

【讨论】:

  • 是的,这就是我要找的!作为旁注,root.winfo_x(), root.winfo_y() 我认为通常应该返回与root.geometry() 相同的坐标,但是,我遇到的问题是我使用 2 个运行 OSX 的显示器,而右边的是我的“家庭”显示器使用位于屏幕最顶部的文件栏。不过,使用 root.geometry() 可以解决我的问题,谢谢!
  • 它仍然有效,谢谢 :-) 我用这段代码得到了预期值: x,y = (int(s) for s in self.geometry().split("+")[1 :])
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 2021-10-07
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多