2016-09-19 162 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 /;