pywin32获得tkinter的Canvas窗口句柄,并在上面绘图
2024-08-31 05:28:50
上一篇博文获得主窗口句柄使用的是root.frame或者通过子控件调用master.frame方法,但是子控件本身没有frame方法。那么怎么获得子控件的句柄呢?试过了很多办法,想过把Canvas当作tkinter子窗口,最后效果都不理想,最后无意看到有人用winfo_id()方法获得主窗口的句柄,而尝试去获得子窗口的句柄也可以。
所以把上一篇博文的代码修改了一下,实现使用win32在tkinter的canvas画布上画画
from win32gui import *
import win32con
import pywintypes
from tkinter import * root=Tk() cv=Canvas(root,bg="white")
cv.pack(fill=BOTH,expand=1) hwnd = cv.winfo_id()
hdc=GetDC(hwnd)
hbrush=GetStockObject(win32con.NULL_BRUSH)
oldbrush=SelectObject(hdc,hbrush) cv.update()
Rectangle(hdc,50,50,100,100) def callback(event):
cv.update()
Rectangle(hdc,50,50,100,100) cv.bind("<Configure>",callback) root.geometry("400x400")
#root.mainloop()
cv.mainloop()
当然这个程序是测试性质的,没有绑定窗口销毁消息释放环境设备等。另外还有一个要注意的是,<Configure>类似于窗口重绘,但是在这个程序里,虽然为canvas绑定了<Configure>事件,但是拖动改变窗口的大小,是改变了主窗口root的大小,所以这里把canvas设置为填充整个主窗口
---------------------
用pywin32获得tkinter窗口句柄,实现在上面绘图,其目的是,我试图找到一种利用python学习opengl的方法。我手里的几个opengl教程都是基于windows窗口的c/c++程序。那么我或许可以试着使用win32函数和一般的python函数,在tkinter窗口上使用opengl库。
最新文章
- 继承映射关系 TPH、TPT、TPC<;EntityFramework6.0>;
- 2015.2.16 关于delphi web控件打开新网页时弹出关闭页面(js代码)出错的解决办法研究
- 常用的Mysql数据库操作语句大全
- psql-06表:约束
- [翻译]MapReduce: Simplified Data Processing on Large Clusters
- swift入门-day01-基本语法
- Android的消息处理机制(Looper,Handler,Message)(转)
- Apache Spark 2.2.0 中文文档 - SparkR (R on Spark) | ApacheCN
- Javascripte的原型链之基础讲解
- Java HashMap 使用了未经检查或不安全的操作
- 安卓获取签名SHA1
- 安装VS时,双击setup.exe后界面一闪而过的问题
- mysql插入中文报错的问题
- react学习笔记1一基础知识
- IIS 设置文件传输大小限制
- java.io.Closeable 接口
- Linux 目录说解
- python3 的 round 函数的 练习
- webdriver模拟鼠标悬浮
- 解决“ 故障模块名称: clr.dll ”