相关文章推荐
粗眉毛的蚂蚁  ·  python tkinter | ...·  1 周前    · 
活泼的椰子  ·  self.tk.call(_flatten( ...·  6 天前    · 
高大的板栗  ·  tkinter中的askstring参数 ...·  4 天前    · 
暗恋学妹的柑橘  ·  AttributeError: ...·  4 天前    · 
任性的火车  ·  编写 WebSocket 服务器 - ...·  6 月前    · 
独立的皮带  ·  AAAI ...·  1 年前    · 
Python的tkinter模块另类玩法,实现真正的嵌套窗口

Python的tkinter模块另类玩法,实现真正的嵌套窗口

tkinter创建真正的嵌套子窗口

  • 引言
  • 获取窗口句柄方法一方法二
  • 创造嵌入窗口
  • 嵌套在组件中
  • 结语

点击此处,获取海量Python学习资料!

引言

在我之前的这篇纯tkinter创建嵌套子窗口的文章中,只提及了3种方法,原因就是,那三种方法都是建立在相对高层的代码上的。而这次需要使用系统(Windows)的底层api,来创建真正意义上的嵌套子窗口。

需要注意的是,这次的子窗口是完全真正的窗口,也就是tkinter的子窗口功能全开。不过,这篇文章并不是由纯tkinter实现。

我们没必要去寻找 Windows-api,已经有人帮我们弄好了,这次需要用到 win32gui (下载 pywin32 就可以了) 。除了单独下载 pywin32,在测试阶段还需要使用 pygetwindow,用 pip install PyGetWindow 就可以了。

获取窗口句柄

方法一

win32gui已经给出了方法,如下:

import win32gui
import pygetwindow as gw
hwnd = win32gui.FindWindow(None, u"窗口名称")

然而在测试就阶段,有些窗口的标题很难准确确定,那么就要使用 pygetwindow 了。

titles = gw.getAllTitles()
print(titles)

方法二

同样的,pygetwindow 也提供了通过标题一个获取窗口句柄的方式。

import re