tkinter - 如何获取副屏幕的屏幕宽度和高度?

10
我有一个双显示器设置(笔记本屏幕和外接显示器)。我的笔记本屏幕是主显示器,外接显示器是辅助显示器。两个显示器的尺寸不同。
在我的 Python tkinter 脚本中,我使用了 “winfo_screenwidth()” 和 “winfo_screenheight()” 来检测屏幕的宽度和高度,以便我可以将根窗口设置为全屏状态。
通常情况下,当我运行我的脚本时,根窗口的大小将是我的笔记本屏幕的大小。当我将窗口移动到扩展的监视器上时,我希望它可以自动调整宽度和高度以匹配外部显示器的宽度和高度。
这可能吗?有没有办法检查根窗口是否在主显示器或辅助显示器上?
“winfo_screenwidth()” 是否可以检测到辅助显示器的宽度和高度?
编辑: 我正在使用 Windows XP Pro 32 位和 Python 2.7。

仅代表个人观点,我认为窗口调整大小应该由用户决定。将窗口全屏只需一次鼠标点击,为什么要强制呢? - tobias_k
1
@tobias_k 抱歉,我忘记提到我正在使用自定义窗口,并通过使用 root.overrideredirect(1) 禁用了普通窗口样式,所以目前我没有默认的最大化按钮。 - Chris Aung
这里有很多答案:https://dev59.com/CnA75IYBdhLWcg3wv70j - User
1个回答

3
我是怎么做到的:
t = Tk() # new window
t.update()
t.attributes("-alpha", 00)
t.state('zoomed') # maximize the window
height= t.winfo_height() # ...
width= t.winfo_width()

不幸的是,我不知道另一屏幕的位置。

但我认为你可以这样做:

  1. 创建一个新窗口
  2. 使用winfo_screenheight()和winfo_screenwidth()了解原始屏幕的情况
  3. 使用geometry()移动窗口
  4. 最大化窗口(它应该总是在它所在的屏幕上最大化)
  5. 获取geometry()
  6. 如果geometry在(0,0),则它是主屏幕,请继续执行第3步。
  7. 你找到了另一个屏幕

你的意思是执行t.state('zoomed')会将根窗口最大化显示在当前屏幕上吗?例如,如果根窗口在主显示器上,它将根据主显示器的宽度和高度进行最大化,并且在辅助显示器上也是同样的情况吗? - Chris Aung
没错。我知道在 Windows 下应该会发生什么。我不能代表其他窗口管理器说话。也许你可以尝试一下,看看它是否可行。 - User

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接