2015-12-21 18 views
1

我似乎無法調用UltimateListCtrl.ScreenToClient(pos)。我不斷收到類型錯誤。我單獨輸入的(X,Y)的元組,我得到wxPython - UltimateListCtrl.ScreenToClient類型錯誤

TypeError: ScreenToClient() takes exactly 3 arguments (2 given) 

我進入X,Y和我得到

TypeError: Window_ScreenToClient() takes at most 2 arguments (3 given) 

任何幫助嗎?這是UltimateListControl的問題嗎?有一個簡單的解決方法嗎?謝謝

回答

1

我相信這是UltimateListCtrl中的問題。

幸運的是,有一個相當簡單的修復方法。發現UltimateListCtrl從加載ultimatelistctrl.py文件,發現內這個ScreenToClient方法並替換線

 return self._mainWin.ScreenToClient(x, y) 

 return self._mainWin.ScreenToClient((x, y)) 

ultimatelistctrl.py文件的完整路徑應該是在異常回溯時您分別指定xy。在我的機器上它是C:\Python27\lib\site-packages\wx-2.9.3-msw\wx\lib\agw\ultimatelistctrl.py。回溯也提到了這個方法行的行號,在我的情況12457.

我建議你做的ClientToScreen方法相同的變化在ultimatelistctrl.py文件,因爲它有同樣的問題。

+0

如果解決方案很簡單,爲什麼變更沒有被推送?另外,做出這種改變的最好方法是什麼,但仍然有一個程序可以從一臺機器移植到另一臺機器,而無需修改wx軟件包? – Shatnerz

+0

@Shatners:你可以嘗試使用'ScreenToClientXY'(和'ClientToScreenXY')方法,這是我以前從未意識到的,直到我遇到[wxWidgets bug跟蹤器上的這個問題](http://trac.wxwidgets。組織/票/ 13938)。或者,您可以創建UltimateListCtrl的子類並覆蓋方法。 –