place()方法可以设置组件的大小及组件在容器中的精确位置。其参数及其含义如表4.3所示。
表4.3 place()方法参数及其含义
由表4.3可以看出,place()方法可以使用两种方式来设置组件的大小及位置,第一种是通过参数x、y、width和height设置组件的大小和位置;第二种是通过参数relx、rely、relwidth和relheight设置组件的大小和位置。下面具体介绍。
视频讲解
表4.3中的x和y可以定义组件的位置,其中(x=0,y=0)位置是窗口的左上角顶点,而width和height分别可以设置组件的宽度和高度,这四个参数设置了组件的绝对位置和绝对大小。换句话说,无论窗口放大或缩小,组件的位置及大小都不会发生改变。下面通过一个实例来演示其用法。
实例位置:资源包\Code\04\09
《三国演义》中有一段经典故事:曹操败走华容道,又遇诸葛亮的伏兵,而关羽为报答曹操曾经的收留之恩,帮助曹操逃出华容道。这段经典故事衍生出一款滑块类游戏——华容道。玩游戏时,只要拖动滑块,帮助“曹操”从最下方中间出口“逃出”即可。本实例通过place()在窗口中布局华容道游戏窗口,具体代码如下:
运行效果如图4.21所示。
视频讲解
在实现实例4.9所布局的华容道游戏窗口后可发现,当放大窗口时,华容道界面的右侧或者下方就会显示空白区域,如图4.22所示。如果我们不希望有空白区域,而是希望窗口内的组件能够随窗口的缩放而进行缩放,那么可以使用relx、rely、relwidth和relheight参数。
图4.21 place()布局华容道游戏窗口
图4.22 放大窗口时,窗口右侧和下方显示空白区域
relx和rely可以设置组件相对窗口的位置,其取值范围是0.0~1.0,可以理解为分别位于窗口水平方向和垂直方向的比例;relheight和relwidth分别设置组件的大小占窗口的比例。
实例位置:资源包\Code\04\10
将实例4.9的窗口效果修改为游戏内滑块与窗口等比例缩放,具体代码如下:
初始运行效果与图4.21相同,当放大窗口时,可看到各组件随窗口一起放大,如图4.23所示。
图4.23 放大窗口时的运行效果