打开当前终端窗口下方/后面的Tkinter窗口和stackorder列表

时间:2013-05-18 00:03:46

标签: ubuntu tkinter gnome-terminal

有很多帖子试图将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本身运行),这将由窗口管理器正确处理;那是对的吗? (我自己在Ubuntu 11.04 Gnome上使用gnome-terminal

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

1 个答案:

答案 0 :(得分:1)

我在Windows 8和Ubuntu 12.04 Unity中尝试了root.lift()root.lower(),他们使用Python解释器控制台,就像使用另一个Tkinter窗口一样。它似乎并不“知道”其他不是由Tkinter创建的窗口,但每个liftlower中的内部系统调用会将它们考虑在内。< / p>

所以看起来你不能用Tkinter访问其他窗口(至少看看source code of the library),这与他们的交互是桌面功能的一部分环境。