我有一个小的GUI应用程序,用于侦听网络消息,以便用户可以更新某些信息并接受它。这是在生产工厂环境中,用于与特定的物理硬件进行交互(在某些情况下通过串行)。工作流程如下所示:
我的问题是在Windows XP上,当我执行deiconify时,GUI不会变为活动状态,反之则不会回到iconify上的前一个窗口。我尝试过其他一些问题,比如:
self.wm_attributes("-topmost", 1)
self.focus_set()
和self.focus_force()
尽管第一个窗口是可见的,但我似乎无法将其作为活动窗口,因此用户无需“单击”它即可键入以激活它。释放“焦点”也是如此,以便活动窗口成为他们之前所使用的窗口(5250)。
这似乎是其他人也有的问题,但我找不到任何有用的东西。是否有一种编程方式可以激活窗口并在完成后释放它?
答案 0 :(得分:0)
不幸的是,一周之后没有答案,我无法找到直接的方式与Tkinter这样做。我确实找到了一种解决问题的方法,但它似乎始终如一地工作。以下是我为激活屏幕所采取的步骤:
然后每次我进行iconify / deiconify时,我也会运行该功能来激活相应的屏幕。激活tk窗口的代码如下所示:
def activate_self(self):
""" Activate this window. """
shell = win32com.client.Dispatch('WScript.Shell')
shell.AppActivate(str(self.title))
shell = None
激活调用者的代码有点难看,因为它必须猜测标题但是基本概念是相同的。