如何在Grid中響應滑鼠移動事件

2022-03-26 10:53:27 字數 969 閱讀 7856

1樓:匿名使用者

最近寫乙個小軟體,gui是用wxpython做的,有乙個功能需要捕獲滑鼠在grid控制項上的移動事件。我先在boa constructor中

拖出乙個grid原型來做測試,發現很容易,只要grid.bind(wx.evt_motion, self.ongridmotion) 就可以了,但是

移植到軟體中去之後,死活無法響應,百思不得其解。

不斷的嘗試之下,總算發現了當grid還沒有建立網格的時候(也就是還沒有creategrid或者settable的時候),是可以直接響應wx.evt_motion的,但是一旦建立了網格之後就不行了。我猜測(沒有python的原始碼,只有c++的,懶得看了)應該是由於wxpython那不同尋常的設計方法,網格的視窗也能單獨管理,由於網格擋住了grid,所以搶先於grid接受到wx.

evt_motion,而wx.evt_motion不屬於commandevent,因此不能傳遞給grid。

問題找到了,我相信一定可以解決,只是苦於wxpython的資料太少。在網上尋覓2個小時後突然發現了一篇文章之中用到getgridcollabelwindow 這個函式。眼前一亮,能得到window不就可以操作了嘛。

趕緊查wxpython api,果然有以下4個函式:

getgridcollabelwindow(self)

getgridcornerlabelwindow(self)

getgridrowlabelwindow(self)

getgridwindow(self)

其中我只要用最後乙個,於是我重新繫結一下:

gridwin = self.grid1.getgridwindow()

gridwin.bind(wx.evt_motion, self.ongrid1motion)

測試,ok!

wxpython + python的開發真是很爽,但沒有文件也真的很頭痛。希望這篇文章能為遇到相同情況的人一點幫助。

如何在Excel中插入,如何在Excel中插入word文件

可以使用物件鏈結和嵌入 ole 將其他程式 如 word 或 excel 中的內容包括在內。ole 受許多不同程式支援,而 ole 用於使在乙個程式中建立的內容在另乙個程式中可用。例如,您可以在 office excel 工作簿中插入 office word 文件。若要檢視可插入的內容型別,請單擊 ...

如何在Excel中建立,如何在Excel中建立模板

1 個性化設定1 設定文件背景色。切換到 頁面布局 選項卡,點選 背景 按鈕,從彈出的視窗中選擇一幅 做為背景。2 個性化設定2 設定字型樣式。點選 單元格區域右上角,選擇所有單元格,然後將字型設定為 仿宋 gb2312 大小設定為 14 顏色設定為 深紅色 3 個性化設定3 設定頁面布局。切換至 ...

如何在ecel中插入,如何在EXCEL中插入EXCEL

插入,文本欄裡的物件,選擇由檔案建立,選擇要插入的檔案,根據設定其它的引數,確定。在excel 2中選擇插入,目標 彈出對話方塊 從檔案中建立,瀏覽 選擇你插入的目標版excel1檔案 權勾上圖示顯示,修改名稱abc,確認,完畢!這樣在excel2中出現乙個abc.els 的檔案圖示,雙擊即可開啟e...