?
插座 (socket) :這里指宿主窗口,它可以讓其它應用程序,把窗口嵌入到它里面。如,任務欄就是一個插座 (socket) 。
?
插頭 (plug) : 顧名思義,它就是被嵌入的窗口,可以插入到插座 (socket) 上。相對任務欄而言,應用程序的窗口就是插頭 (plug) 。
?
插頭 (plug)/ 插座 (socket) 兩者可以在同一個應用中,也可以在不同的應用程序中。在同一個應用程序里,這種做法意義不大,而且可以說是自找麻煩。大多數情況下,它們分別位于不同的進程之中,一個插座 (socket) 窗口可以容納多個插頭 (plug) 窗口中,而一個插頭 (plug) 窗口只能處于一個插座 (socket) 窗口之中。
?
plug:
plug = gtk.Plug(socket_id)
id = plug.get_id()
?
socket:
socket = gtk.Socket()
socket.add_id(window_id)
plug = gtk.Plug(0L)
socket.add_id(plug)
window_id = socket.get_id()
plug = gtk.Plug(window_id)
?
?
=========
socket:
?
#!/usr/bin/python
import string
import pygtk
pygtk.require('2.0')
import gtk,sys
window = gtk.Window()
window.show()
socket = gtk.Socket()
socket.show()
window.add(socket)
print "Socket ID=", socket.get_id()
window.connect("destroy", gtk.mainquit)
def plugged_event(widget):
print "I (",widget,") have just had a plug inserted!"
socket.connect("plug-added", plugged_event)
if len(sys.argv) == 2:
socket.add_id(long(sys.argv[1]))
gtk.mainloop()
?
?
plug:
?
#!/usr/bin/python
import pygtk
pygtk.require('2.0')
import gtk,sys
Wid = 0L
if len(sys.argv) == 2:
Wid = long(sys.argv[1])
plug = gtk.Plug(Wid)
print "Plug ID=", plug.get_id()
def embed_event(widget):
print "I (",widget,") have just been embedded!"
plug.connect("embedded", embed_event)
entry = gtk.Entry()
entry.set_text("hello")
def entry_point(widget):
print "You've changed my text to '%s'" % widget.get_text()
entry.connect("changed", entry_point)
plug.connect("destroy", gtk.mainquit)
plug.add(entry)
plug.show_all()
gtk.mainloop()
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

