导航:首页 > 编程语言 > python里bind

python里bind

发布时间:2022-05-09 18:48:58

python中关于bind()的使用

让前面那个事件去触发后面的事件不就成了。调 用后面那个函数。 所以不需要一个事件下bind很多个函数。只需要一个母函数,调 用一组子函数。

❷ python中如何实现多个图形的实践绑定

fromTkinterimport*

master=Tk()
w=Canvas(master,width=320,height=320)
w.pack()
forxinrange(0,16):
foryinrange(0,16):
w.create_rectangle(20*x,20*y,20*(x+1),20*(y+1),fill='CornflowerBlue')
defmouse(event):
w.delete(w.find_closest(event.x,event.y))
w.bind("<3>",mouse)
mainloop()

❸ Python的socket模块中的bind

port中文端口,可以任意写,一般要写大于1000的,比如8080啥的。

❹ tkinter中bind()和bind_all()有什么区别

bind需要指定绑定的事件,
而bind_all将绑定所有事件,触发任何事件都将回调函数

❺ python中bind的port为0代表什么意思

bind函数需要两个参数,这里传入了一个元组,该元组有两个元素,那这时跟bind函数需要的参数位置一一对应。
元组的第一个元素是'',表示不传入第一个参数,这时就使用默认的值,是本机IP地址。

❻ wxpython中bind怎么传递参数函数触发

最近捣鼓Python,也就自然捣鼓上了wxPython。我曾经用过Qt和Gtk+写GUI,但几乎所有的Python书都告诉我说最好用的是wxPython,我没有尝试PyQt和PyGtk就开始研究wxPython了。在Qt和Gtk+之间我更喜欢Qt,因为它跨平台做得很好,而且商业化也不错。但wxWidget给人的感觉就完全不同了。

如果说wxWidgets相对于Qt有什么优势的话,大概就只有体积较小了。从开发效率上看,如果不和Python组合真的比不上Qt;从商业支持上看wxWidgets根本没有。不过和Python组合之后,开发效率大大提高,虽然用来做很正式的商业软件并不合适,但写写小程序还是很方便的。

现在切入正题,wxWidgets是一个事件驱动的体系,对于触发的事件,需要给它挂上相应的事件处理函数。在Python中这个函数的形式是这样的:

wx.Frame.Bind(self, event, handler, source=None, id=-1, id2=-1)
在一般使用时,我们基本上只会给定event、handler和source,event是事件的名称,handler是处理函数,source是事件的发生者,比如一个Button1被单击而发生了EVT_BUTTON事件,如果我们用self.OnButton1()来处理,会这么写:

self.Bind(wx.EVT_BUTTON, self.OnButton1, self.Button1)
这里self是一个Frame(wxPython中的窗体这样的东西),而Button1是放在这个Frame下面的一个Button,self.OnButton1就是事件处理函数。而wxPython定死了事件处理函数的形式:

def handler(self,event):
...
事件处理函数只能接受两个参数,一个还是self。至于event,一看就知道是那个发生的事件。但这样就有一个问题了:如果我想批量创建一些按钮或者菜单键(我想这种事情是很普遍的),并且希望用同一个函数来处理它们,这个函数该怎样辨别是哪个按钮触发的事件呢?显然我们希望能多传一些参数。Qt实现这一点很容易,但wxWidgets就显得很棘手了。

我并没有用C++写过wxWidgets的程序——确切地讲是复制过一个example的,但是不知道是我英语太拆还是真的没有,我没能在wxWidgets的入门指南中找到编译指令,最后没法编译它。因此我不知道这个限制是不是C++也有,但是Python可以通过lambda来解决这个问题。以下的例子我用的是菜单。

首先我们建一个OnMenusClick函数:

def OnMenusClick(self, event, mark):
....
这个函数多接收一个mark,绑定的时候,就不是把OnMenusClick直接绑定上去,而是传递一个被lambda包装过的函数。下面这个例子就会建立一堆Menu的按键,并给他们编号,OnMenusClick就可以接收到它们的编号了:

menu=wx.Menu()
for i in range(0,N):
btn=menu.Append(wx.NewId(), str(i))
self.Bind(wx.EVT_MENU, lambda evt, mark=i : self.OnMenusClick(evt,mark) ,btn )
完成了!是不是感觉有点magic?关键在于这句lambda

lambda evt, mark=i : self.OnMenusClick(evt,mark)
这句实际上产生了只接收evt一个参数的函数,并将其传递给了self.OnMenusClick,这样就能够实现给事件处理函数传递更多参数的目的了。

阅读全文

与python里bind相关的资料

热点内容
编程买苹果电脑 浏览:760
flac算法 浏览:497
reactnative与android 浏览:663
程序员是干什么的工作好吗 浏览:258
kbuild编译ko 浏览:469
条件编译的宏 浏览:564
韩语编程语言 浏览:644
小程序开发如何租用服务器 浏览:78
怎么把钉钉文件夹保存到手机里 浏览:69
兵法pdf 浏览:643
app格式化下载不起怎么办 浏览:34
信捷加密文件是干嘛用的 浏览:952
su模型下载怎么解压不了 浏览:182
国际体验服如何把服务器改为亚服 浏览:882
手机怎么关闭视频加密 浏览:464
单片机编程存表法 浏览:722
富士康服务器是什么 浏览:455
编译是二进制吗 浏览:264
小程序账号登录源码 浏览:878
云南社保局app叫什么 浏览:699