20.4 移动按钮

    如果想对这个按钮做些操作,怎么指示按钮呢? PyQt 会自动处理好窗口中所有组件的状态。因为你知道 self 指向窗口,pushButton 是组件的名字,所以可以使用 self.pushButton 来访问这个组件。

    在代码清单 20-2 的例子中,每次点击按钮时会让它移动。按钮在窗口中的位置由它的 geometry 属性确定,该属性包含 x 位置、y 位置、宽度和高度。要改变这些属性,有两种方法。一种方法是使用 SetGeometry() 方法来改变几何属性。另一种方法(代码清单 20-2 中采用的方法)是使用 move() 方法,它只改变 x 位置和 y 位置,不改变宽度和高度。x 位置是与窗口左边的距离,y 位置是与窗口顶边的距离。窗口左上角的位置是 [0, 0](这与 Pygame 中一样)。

    运行这个程序时,你会看到,点击几次后,按钮会从窗口右下角消失。如果还想看到按钮,可以调整窗口的大小(拖动窗口边界或者窗口的某个角),让窗口更大,这样你就又能看到按钮了。完成时可以关闭窗口,你可以点击标题栏中的 ×, 或者使用操作系统中相应的组件。

    可以注意到,与 Pygame 不同,现在我们不用操心把按钮从它的老位置“擦除”,再在新位置上重绘。我们只需要移动按钮,所有这些擦除和重绘工作都会由 PyQt 来完成。