2016-09-19 182 views
0

我想解決這個問題。WxPerl,從wxPoint對象獲取座標

  1. 從特定的幀(wxFrame)(函數爲getPosition()返回WxPoint
  2. 序列化位置(X,Y),以從文件文件
  3. 設定位置到另一個窗口

獲取位置Everythink可以,除了從WxPoint對象獲取座標x和y。 我不知道,我如何訪問此對象的屬性「x」,「y」。例如wxPython允許通過「somepoint.x」,但WxPerl? somepoint->{"x"}不起作用,因爲對象是標量引用..

謝謝

+1

這只是一種猜測,但這是否工作:'我$ p = $ f-> GetPosition(); $對 - > X(); $ p-> y();' – stevieb

+1

正是!謝謝 – stepan

+0

現在我已經確認它已經成功了。 – stevieb

回答

0

以下應該做你要找的內容用於:

my $point = $frame->GetPosition; 

my $x = $point->x; 
my $y = $point->y; 
+0

解釋會很好 – Borodin

-1

解決方案是使用($pwxPoint實例):

my $p = $f->GetPosition(); 
$p->x(); $p->y() 
+0

'wxPoint'不是Perl類 – Borodin

1

wxPerl及其文檔有點像黑客馬拉松。例如,許多軟件包僅在庫的XS組件中定義,因此幾乎不可能進行調試。 (這就是爲什麼你的Wx::Point對象是一個標量引用;標量值只是對象數據的一個句柄。)

我找到了一塊文檔,我記得從某處解釋WxPerl訪問屬性和方法用Perl方法調用

如果你看看wxPoint Class Reference,你會看到有三個構造函數:一個沒有參數,返回一個點在[0,0],一個需要x和y座標以及接受現有對象並使用其座標的複製構造函數。這些中的最後一個在wxPerl中不起作用。有許多類似的古怪,你必須自己發現,因爲文檔是可怕的

同樣,各種「運營商」是wxPerl無關。他們可以工作,如果操作者的負擔過重,但wxPerl是專爲速度所以這被丟棄

至於其他已經描述的那樣,這兩個屬性xy必須爲方法調用訪問。 (這同樣適用於在wxPerl所有其他類的屬性。)

所以,你可以寫

my $x = $p->x; 
my $y = $p->y; 

或者,如果你想獲得時髦

my ($x, $y) = map { $p->$_ } qw/ x y /;