<p>遗憾的是,python gobject自省似乎没有任何进展来解决这个问题并使<code>gdk_win32_window_get_handle</code>可用(不久前在gnomebugtracker中报告了一个错误)-python GStreamer和Windows也非常需要它。。。在</p>
<p>所以我按照totaam的建议,使用ctypes访问gdk_win32_window_get_句柄。但我从来都不需要这样的经历。。。在</p>
<p>代码如下:
在</p>
<pre><code> Gdk.threads_enter()
#get the gdk window and the corresponding c gpointer
drawingareawnd = drawingarea.get_property("window")
#make sure to call ensure_native before e.g. on realize
if not drawingareawnd.has_native():
print("Your window is gonna freeze as soon as you move or resize it...")
ctypes.pythonapi.PyCapsule_GetPointer.restype = ctypes.c_void_p
ctypes.pythonapi.PyCapsule_GetPointer.argtypes = [ctypes.py_object]
drawingarea_gpointer = ctypes.pythonapi.PyCapsule_GetPointer(drawingareawnd.__gpointer__, None)
#get the win32 handle
gdkdll = ctypes.CDLL ("libgdk-3-0.dll")
hnd = gdkdll.gdk_win32_window_get_handle(drawingarea_gpointer)
#do what you want with it ... I pass it to a gstreamer videosink
Gdk.threads_leave()
</code></pre>