【问题标题】:Why is tkinter geometry placement making my window appear in inconsistent locations on my screen?为什么 tkinter 几何放置使我的窗口出现在屏幕上不一致的位置?
【发布时间】:2022-01-19 17:34:56
【问题描述】:

我有一个 tkinter 窗口,我想将其放置在屏幕中间,并且正在使用这样的 Python 3 代码:

import tkinter as tk

window = tk.Tk()
window_width = 500
window_height = 400
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
horiz_centre = int((screen_width - window_width) / 2)
vert_centre = int((screen_height - window_height) / 2)
window.geometry(f"{window_width}x{window_height}+{horiz_centre}+{vert_centre}")

window.mainloop()

我的窗口出现在屏幕左上角,而不是像我希望和期望的那样居中。我的变量具有我期望的值。

多次运行相同的代码并不能保证窗口每次都会出现在相同的位置。

这是怎么回事?

谢谢。

【问题讨论】:

  • 这是在什么平台上运行的?听起来窗口管理器选择错开窗口位置,而不是尊重请求的位置。
  • 无法在 Windows 上重现

标签: python tkinter


【解决方案1】:

您的代码非常适合我。每次我运行脚本时它都会显示在屏幕中间 - 这是个好消息。

至于为什么它不适合你,我想知道这是否可能是 @jasonharper 在 cmets 中所说的问题。否则,我遇到了与双显示器和分辨率设置类似的其他问题,值得快速检查。

试试这个:

1.) 右键单击​​桌面并选择“显示设置”

2.) 确保您的比例和布局设置为推荐的分辨率。

3.) 断开您可能已连接的任何其他显示器。

【讨论】:

  • 谢谢! @jasonharper:我在 Windows 10 上运行,并且通过一些搜索确实发现我的桌面窗口管理器 (dwm.exe) 正在我的任务管理器的进程列表中运行。我还没有弄清楚是否有办法覆盖这些设置,但是我正在编写的程序的其他用户可能没有这个问题。
  • 谢谢@BMarshyyy——我确实在多台显示器上工作。我尝试了您的建议,但 tkinter 窗口位置仍然不受影响,因此正如您和 jasonharper 所说,它可能是桌面窗口管理器(dwm.exe)接管。 Window Manager gaslighting 我——松了一口气,我猜代码没问题!
  • 该死 - 我希望这对你来说是一个简单的答案。祝你好运,希望你能弄明白!
猜你喜欢
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多