【问题标题】:Getting tkinter current window handle获取 tkinter 当前窗口句柄
【发布时间】:2021-12-27 20:15:47
【问题描述】:

如何获得 tkinter 窗口的句柄? 我试过了……

h = self._get_hwnd()

但它不起作用。我正在使用 Python IDLE Shell 3.10.1(操作系统:Windows 10)。

示例:

import tkinter as tk
root=tk.Tk()
root.title=("Test")
text1=tk.Text(root, height=10, width=50)
text1.insert(tk.INSERT,self._get_hwnd())
text1.pack()
root.mainloop()

【问题讨论】:

  • 你从哪里得到self__get_hwnd 是什么?顺便说一句,你的例子不起作用,据我测试tkinter 提供的方法实际上并没有给出正确的句柄(在 Windows 上,但它可能对你有用)
  • 您也许可以使用问题Get HWND of each Window? 的答案中显示的一种技术找到它(不涉及使用tkinter)。
  • @Matiiss:如果它对 OP 有效,他们就不会问这个问题了。
  • Matiiss - 我在 stackoverflow 中搜索并找到 self._get_hwnd() (不工作)。我的例子有效。尝试 text1.insert(tk.INSERT,"12345678") 和 tkinter 将打印 12345678。@martineau 我想找到 tkinter 自己的(主)窗口的句柄。我不是在寻找外国窗口。
  • 链接问题的一些答案中的代码将找到 any 窗口的 HWND,无论它是否由 tkinter 创建。如果你给你的窗口一个独特的标题,你应该可以找到它。

标签: python tkinter window


【解决方案1】:

根据官方tk文档,winfo_id方法会在w​​indows上返回HWND。

来自winfo 命令的官方 tcl/tk 手册页:

winfo id 窗口 - 返回一个十六进制字符串,为窗口提供一个特定于平台的低级标识符。在 Unix 平台上,这是 X 窗口标识符。在 Windows 下,这是 Windows HWND。在 Macintosh 上,该值在 Tk 之外没有任何意义。

翻译成tkinter,winfo id window就是window.winfo_id()

【讨论】:

  • 此函数返回的 hwnd 不是 OP 期望的窗口。 Look at my answer here
  • @Thingamabobs 谢谢。我访问了您的链接,现在可以使用:text1.insert(tk.INSERT,tk.Frame().winfo_id())
  • Werner925:我很困惑,您说您访问了 Thingamabobs 链接,但您正在使用此答案中的建议并说它现在可以工作(?) - 请澄清其他答案如何使其工作。
猜你喜欢
  • 2015-02-23
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多