1

有很多关于尝试将 Tkinter 窗口推到顶部的帖子:

...以及我发现的一篇文章(仅部分关于 Tkinter),底部有一个窗口,这是我感兴趣的:

...但是,在这里我想在当前终端窗口下方打开一个 Tkinter 窗口 - 比如说我打开一个终端,然后在那里运行 Python shell:

$ python2.7
Python 2.7.1+ (r271:86832, Sep 27 2012, 21:16:52) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter as tk
>>> root = tk.Tk()
>>> str(root)
'.'
>>> root.tk.eval('wm stackorder '+str(root))
'.'
>>> root.lower()

当我输入时root.lower()(非常小心,所以窗口保持在顶部,而我按 Enter 键),我看不到桌面上窗口堆叠顺序的任何变化(即窗口只是保持在顶部)。

现在,据我所见wm stackorder,Tkinter 可能只跟踪它自己的窗口——而不是终端窗口(Python 本身在其中运行),这将由窗口管理器正确处理;那是对的吗?(我自己gnome-terminal在 Ubuntu 11.04 Gnome 上使用)

在那种情况下,我想期望lower()将窗口发送到桌面窗口堆叠顺序的底部是不合理的,而 tkinter 甚至都不知道。但这是否正确理解 - 有没有办法从 Tkinter 发送一个“返回”窗口?

4

1 回答 1

1

我已经在 Windows 8 和 Ubuntu 12.04 Unity 中尝试过root.lift()root.lower()它们在 Python 解释器控制台中的行为就像在另一个 Tkinter 窗口中一样。似乎它并不“知道”不是由 Tkinter 创建的其余窗口,而是每个窗口中的内部系统调用lift并将lower它们考虑在内。

因此,您似乎无法使用 Tkinter 访问其他窗口(至少,通过查看库的源代码),与它们的这种交互是桌面环境功能的一部分。

于 2013-05-21T22:44:49.873 回答