WxPerl,从wxPoint对象获取坐标

时间:2016-09-19 16:18:04

标签: perl wxwidgets point object-reference

我想解决这个问题。

  1. 从特定框架(wxFrame)获取位置(函数GetPosition()返回WxPoint
  2. 将位置(x,y)序列化为文件
  3. 从文件设置位置到另一个窗口
  4. 除了从WxPoint对象获取坐标x和y之外,Everythink没问题。 我不知道,我怎么能访问这个对象的属性“x”,“y”。例如wxPython允许这个“somepoint.x”,但是WxPerl? somepoint->{"x"}不起作用,因为object是SCALAR引用..

    谢谢

3 个答案:

答案 0 :(得分:1)

wxPerl及其文档有点像黑客马拉松。例如,许多软件包仅在库的XS组件中定义,因此几乎不可能进行调试。 (这就是你的Wx::Point对象是标量引用的原因;标量值只是对象数据的句柄。)

我已经找到并且未能找到一大块文档,我从某处解释说WxPerl以相同的方式访问属性和方法,通过Perl方法调用

如果查看wxPoint Class Reference,您将看到有三个构造函数:一个没有参数,返回[0,0]处的点,一个采用x和y坐标,一个复制构造函数接受现有的wxPoint对象并使用其坐标。最后一个在wxPerl中不起作用。你必须为自己发现许多类似的怪异,因为文档令人震惊

同样是各种"运营商"与wxPerl无关。如果操作符过载,它们可以工作,但是wxPerl是为了速度而构建的,因此被丢弃了

正如其他人所描述的那样,必须将两个属性xy作为方法调用进行访问。 (这同样适用于wxPerl中所有其他类的属性。)

所以你可以写

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

或者,如果你想变得时髦

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

答案 1 :(得分:0)

以下内容应该可以满足您的需求:

my $point = $frame->GetPosition;

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

答案 2 :(得分:-1)

使用解决方案($pwxPoint的实例):

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