【问题标题】:What's the difference between the .width and .w attribute of a Pygame Rect object?Pygame Rect 对象的 .width 和 .w 属性有什么区别?
【发布时间】:2015-06-24 11:47:13
【问题描述】:

官方pygame documentation 声明有几个虚拟属性可用于移动和对齐pygame.Rect 实例:

直到现在我分别使用myRect.wmyRect.h 来确定@​​987654326@ 对象的宽度或高度。但是为了完成这个图形,我遇到了 .width.height 属性

有趣的是,这两个属性似乎都为我们提供了相同的日期,您可以在以下代码清单中看到:

>>> myRect = pygame.Rect((10, 20), (200,100)) #create a new Rect instance
>>> myRect.w
200
>>> myRect.width
200
>>> myRect.size
(200, 100)

现在这两个属性对有什么区别?

【问题讨论】:

    标签: pygame rect


    【解决方案1】:

    没有区别。你可以看看Rect类的source

    static PyGetSetDef rect_getsets[] = {
        { "x", (getter)rect_getleft, (setter)rect_setleft, NULL, NULL },
        { "y", (getter)rect_gettop, (setter)rect_settop, NULL, NULL },
        { "w", (getter)rect_getwidth, (setter)rect_setwidth, NULL, NULL },
        { "h", (getter)rect_getheight, (setter)rect_setheight, NULL, NULL },
        { "width", (getter)rect_getwidth, (setter)rect_setwidth, NULL, NULL },
        { "height", (getter)rect_getheight, (setter)rect_setheight, NULL, NULL },
        { "top", (getter)rect_gettop, (setter)rect_settop, NULL, NULL },
        { "left", (getter)rect_getleft, (setter)rect_setleft, NULL, NULL },
        { "bottom", (getter)rect_getbottom, (setter)rect_setbottom, NULL, NULL },
        { "right", (getter)rect_getright, (setter)rect_setright, NULL, NULL },
        { "centerx", (getter)rect_getcenterx, (setter)rect_setcenterx, NULL, NULL },
        { "centery", (getter)rect_getcentery, (setter)rect_setcentery, NULL, NULL },
        { "topleft", (getter)rect_gettopleft, (setter)rect_settopleft, NULL, NULL },
        { "topright", (getter)rect_gettopright, (setter)rect_settopright, NULL,
         NULL },
        { "bottomleft", (getter)rect_getbottomleft, (setter)rect_setbottomleft,
          NULL, NULL },
        { "bottomright", (getter)rect_getbottomright, (setter)rect_setbottomright,
          NULL, NULL },
        { "midtop", (getter)rect_getmidtop, (setter)rect_setmidtop, NULL, NULL },
        { "midleft", (getter)rect_getmidleft, (setter)rect_setmidleft, NULL, NULL },
        { "midbottom", (getter)rect_getmidbottom, (setter)rect_setmidbottom, NULL,
          NULL },
        { "midright", (getter)rect_getmidright, (setter)rect_setmidright, NULL,
          NULL },
        { "size", (getter)rect_getsize, (setter)rect_setsize, NULL, NULL },
        { "center", (getter)rect_getcenter, (setter)rect_setcenter, NULL, NULL },
    
        { "__safe_for_unpickling__", (getter)rect_getsafepickle, NULL, NULL, NULL },
        { NULL, 0, NULL, NULL, NULL }  /* Sentinel */
    };
    

    你可以看到例如wwidth 都调用 rect_getwidth:

    /*width*/
    static PyObject*
    rect_getwidth (PyRectObject *self, void *closure)
    {
        return PyInt_FromLong (self->r.w);
    }
    

    为了便于阅读,我仍然建议使用width/height 而不是w/h

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-10
      • 2016-10-27
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多