日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

给wxPython事件处理函数传递参数

發布時間:2025/3/21 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 给wxPython事件处理函数传递参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近搗鼓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,這樣就能夠實現給事件處理函數傳遞更多參數的目的了。


原文地址:

http://blog.segmentfault.com/sweetdum/1190000000487499

總結

以上是生活随笔為你收集整理的给wxPython事件处理函数传递参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产欧美网站 | 成人性生交大片免费看vrv66 | 久久国产一区二区三区 | 日本美女动态 | 韩国bj大尺度vip福利网站 | 99热3 | 国产一线二线在线观看 | 美女131爽爽爽做爰视频 | 91婷婷| www操| 91精品国产91久久久久福利 | 国产aa| 网址你懂的在线 | 丰满岳妇乱一区二区三区 | 国产精品第9页 | 精品国产aⅴ一区二区三区东京热 | 欧美精品一区二区久久婷婷 | 日韩av电影在线播放 | 日韩欧美在线一区二区 | av一级在线 | 人妻少妇偷人精品久久性色 | 国产欧美一区二区三区在线看蜜臂 | 性猛交xxxx乱大交孕妇2十 | 亚洲春色另类 | 欧美成人黄 | 黄色操人视频 | 国产欧美一区二区三区精华液好吗 | 在线激情av | 香蕉视频亚洲一级 | 国内精品久久久久久久久 | 欧美jizz19性欧美 | 99免费在线视频 | 亚洲第一色网站 | 亚洲免费大全 | 国产a线 | 久久精品6 | 成人av18| 亚洲国产精品久 | 人成在线 | 久久精品国产亚洲av嫖农村妇女 | 中文字幕人妻互换av久久 | 特级西西人体wwwww | 久久福利影视 | 日韩精品电影网 | 自拍 亚洲 欧美 | 色干干| 黄色视屏网站 | 日本中文一区 | 成年人av在线 | 亚洲一区二区三区播放 | 亚洲视频日韩 | 调教91| 韩国中文字幕hd久久精品 | 波多野结衣av电影 | 这里只有精品国产 | 国产chinasex对白videos麻豆 | 久久色在线观看 | 欧美专区第一页 | 国产精品一线 | 久久婷婷国产麻豆91 | 国产精品三级久久久久久电影 | 精品久久久久中文慕人妻 | 国产91福利 | 日穴 | 日本一区二区在线不卡 | 在线看片网址 | 特级毛片www| 国产精品免费无码 | 欧美性猛交乱大交3 | 成人性视频网 | 国产又粗又猛又大爽 | 黄色日韩 | 亚洲日本色| 日韩黄色免费视频 | 美女露隐私网站 | 欧美三级图片 | 91福利视频在线观看 | www.日本高清| wwwav在线| av先锋影音 | 在线天堂v| 一级黄色大片免费观看 | 欧美拍拍视频 | 亚拍一区 | 亚洲无色| bangbros性欧美18| www国产在线 | 精品欧美一区二区久久久 | 欧美日韩在线视频免费观看 | 777欧美| 精品一区久久久 | 国产欧美一区二区三区视频在线观看 | 日本泡妞视频 | 91中文字幕在线观看 | 亚洲无av在线中文字幕 | 日韩黄色三级 | 黄色动漫在线免费观看 | 欧美一区二区三区在线 | 亚洲色图导航 |