【问题标题】:Python Tkinter Screen SnapPython Tkinter 屏幕快照
【发布时间】:2015-08-26 14:11:33
【问题描述】:

有没有一种方法可以让 Tkinter 窗口在触摸它时捕捉到屏幕,就像 Skype 将它拖到角落时的工作方式一样。我想尝试通过在我未来的程序中将其关闭的选项来实现这一点。

编辑:我决定最好附上一些图片来说明我的意思。 Skype

在 Paint.Net 中可以观察到相同类型的“棍子”。 Paint.Net

【问题讨论】:

  • 您能否更具体地说明您寻求实现的行为?什么是“触摸时捕捉到屏幕”是什么意思?我刚刚尝试使用Skype,它的行为就像一个普通的应用程序。 (在 OSX 上)
  • 对我来说,窗口的捕捉方式与任何普通窗口相同,除非它们使用root.resizable(False, False) 设置为不可调整大小。
  • @Siwel 我的意思是当它接触到外屏的任何部分时,我有点……连接到它。我想在我的程序中实现这一点。我真的不知道如何才能更好地解释它......因为我不知道它叫什么。
  • 此功能通常由窗口管理器在应用程序之外实现。您确定您的窗口管理器为其他窗口执行此操作但不为您的窗口执行此操作吗?或者您是在问如何在本机不支持此功能的系统上执行此操作?另外,您希望这个“捕捉”功能在您拖动窗口时起作用还是仅在应用首次启动时起作用?
  • 我正在尝试实现此功能以在我的 Windows 程序上工作。自然,Windows 没有屏幕快照功能(我认为)。我希望它在触摸侧面时始终能够捕捉到屏幕的侧面;很像我最喜欢的例子,Skype。

标签: python tkinter


【解决方案1】:
root = Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
root.geometry("%dx%d" % (width, height))

您是否尝试将其添加到您的代码中?

我的意思是当它触摸到外屏的任何部分时,我喜欢 of...连接到它。

我在我的代码中使用它,它就像你提到的那样工作

【讨论】:

  • 我认为 OP 希望在拖动窗口时发生这种情况,不一定在启动时发生。
  • @BryanOakley 感谢您的洞察力。我看到OP还没有提到它。
  • @DhruvJ 不幸的是,我并不是说它要拉伸到屏幕大小。感谢您花时间询问,但我的意思是当它轻轻触摸时它会附着在屏幕的一侧(不是让它伸展到屏幕的一半大小)。
  • @BryanOakley 感谢您抽出宝贵时间,但正如我在对 DhruvJ 的回复中所写的那样,这仍然不是我的意思,如果有办法向您展示我的意思,我会的,但是最近,我的台式风扇坏了,所以我需要一个新的;并稍微升级一下。
【解决方案2】:

您需要做的是在根窗口上为<Configure> 事件创建一个绑定。当根窗口以某种方式改变时触发此事件,包括窗口移动时。当用户拖动窗口时,此事件将触发多次。当用户调整窗口大小时,它也会触发,FWIW。

在绑定中可以确定窗口的当前位置,也可以获取屏幕尺寸。然后将窗口位置与屏幕尺寸进行比较以确定窗口是否应该“捕捉”。

如果窗口应该“捕捉”,您可以使用after 安排在短暂延迟后移动窗口(这样它就不会立即捕捉,以防用户将其一直移动到边缘然后将其移回)。然后,您可以在根窗口上使用geometry 方法将其放在边缘,和/或调整其大小以填充显示器的适当一侧。

【讨论】:

  • 感谢您的宝贵时间。下次我做一些编码时,我会试试这个。谢谢你不只是给我代码 c:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多