如何在Windows上的python3中获取Tkinter窗口的HWND?

时间:2017-05-27 15:32:58

标签: python-3.x tkinter tkinter-canvas

如何在Windows上的python3中获取Tkinter窗口的public function beforeSave($insert) { if($this->password) { $this->setPassword($this->password); } if($insert) { $this->generateAuthKey(); } return parent::beforeSave($insert); } public function setPassword($password) { $this->password = Yii::$app->security->generatePasswordHash($password); } public function generateAuthKey() { $this->auth_key = Yii::$app->security->generateRandomString(); } /** * @param $password * @return bool */ public function validatePassword($password) { return Yii::$app->security->validatePassword($password, $this->password); } /** * @inheritdoc */ public static function findIdentity($id) { return static::findOne([ 'id' => $id ]); } public static function findIdentityByAccessToken($token, $type = null) {} /** * @param $username * @return null|static */ public static function findByUsername($username) { return static::findOne([ 'username' => $username, ]); } /** * @inheritdoc */ public function getId() { return $this->id; } /** * @inheritdoc */ public function getAuthKey() { return $this->auth_key; } /** * @inheritdoc */ public function validateAuthKey($authKey) { return $this->auth_key === $authKey; }

  • 如果可能,我想获取Tkinter窗口的原生窗口句柄。
  • 我需要窗口的HWNDHWND来执行自定义绘图操作。

有没有办法获取HDC或任何其他子组件的HWND

  

有一种方法可以列出当前进程创建的所有窗口。我也能够遍历前面列出的任何窗口的子窗口。这将是问题的丑陋的解决方案

如果Tkinter没有直接暴露手柄,请发布任何替代解决方案。

1 个答案:

答案 0 :(得分:2)

我相信你需要的是TopLevel窗口方法。

查看此link

  

frame()[#]   返回一个字符串,其中包含与窗口最外层父节点对应的特定于系统的窗口标识符。对于Unix,这是X窗口标识符。对于Windows,这是转换为长整数的HWND。

还有关于获取HWND here.

的其他信息
  

winfo_id()[#]   获取此窗口小部件的系统特定窗口标识符。对于Unix,这是X窗口标识符。对于Windows,这是转换为长整数的HWND。

我相信使用上面的winfo_id(),您应该能够获得画布的HWND。