内容正文:
好,同学们,我们今天给大家讲的是我们选考的部分,就是GUI的一个编程。这个的话在我们校考中一般大部分会选考会选择这个GUI的一个编程,也叫做我们的pens的MDM编程。这个的分值比较高,一般在60分以上。好,我们来今天按照这四个部分来给大家讲。首先我们要知道什么叫t kinder,然后第二个部分是我们的布局管理器。布局管理器这个东西就相当于是我们要如何把这些控件按照什么样的格局或者布局的方式,放置在我们的主窗口上面。然后第三部分我们来讲的是这个主张口的一个创建及属性。第四部分我们就讲一些我们常考的一些通用的一些属性。而这些通用的属性的话,它是适用于我们所有的一些我们后面学的一些控件。好,首先我们来看一下gender,我们一般简称叫TK它本质上是对TCLK软件包pens on接口的一个分装。那么这个红色的部分我建议大家去记住,这个也会考一些理论题。比如说我们的选择题就是它是对TCLTK的一个接口的一个分装就行了。而我们paths是官方推荐的GOI这个工具包,就是我们自带的这个kinder。它是内置的,所以我们学习的是这个t ender。我们接下来去讲一下我们的这个布局管理器,我们一共有三个布局管理器。第一个是我们的pack,它能够默认将我们的控件是自上而下居中布局的。那么强调控件的先后顺序,它的灵活性是最差的。其次是我们的这个grade,它是以这种行和列的形式进行布局的。就有一点类似于我们的这个excel表格那种行和列的,然后把控件放在一个个的单元格里面的,就那种的。它的灵活性要比上一个的pg要较好一点,较为灵活。最灵活的就是通过坐标去给它布局的,可以指定组件大小及摆放的一个位置。它是三个方法中最为灵活的。但是这里面我要跟大家说一下的是这个place布局。虽然说它是三者中最灵活的,但我们考试的话一般不会去考察你place的布局,一般都是写好的,为什么呢?因为我们的place布局的话,它如果要让我们去写的话,它要提供很多的一个坐标的一些数值。一般我们是不会去给那么多的一个参数的。我们来给大家看一下,就是说place布局长什么样的一个题目。大家可以看到这个题目,这题目里面,它是已经给你写好的了。大家可以看一下,这个就是我们的什么place布局,我放大一点给大家看。大家可以看一下,这个就是我们的place布局,这后面是不是跟着X和Y就是我们的坐标,那么你要提供太多的坐标了。一般place布局考察的话,就像我这一题展示的这样,就是已经写好的,你只需要完成我们的这个空缺的这个函数的部分就行了。一般的这个校考的这个GOI的题目都是这样去考察的,很少有说让你去自己按照这个图形把它写出来,这样的话其实工作量还是比较大的。因为你既要写出前面的这个我们界面的代码,你还要完成后端的一些逻辑。所以说这个一般考察的比较少,一般都是类似于我展示给大家的这样的一个标准的题目,就是我们的这个给大部分的框架写好,把一些单词空出来让他填。比如说窗口标题,窗口大小,然后那个嗯比如说这儿还有一个主事件循环等等。然后这里面的话就是我们的完成我们绑定的这些函数,比如说是CTTJ这些函数。好,那么我们接着去讲,也就是说我们只需要掌握第一个pack和第二个grade就行了。Please布局的话了解一下就可以了。好,那么接下来我们来讲一下这个pack布局。Pack布局是一个较为简单的布局方式,在不使用任何参数下,它会将空间我们的按照先后顺序自上而下一行一行的进行一个排列,默认是居中布局的那我们来看一下pack里面有哪些长的一些参数。首先第一个是uncle,这个的话其实就是一种对齐方式对齐方式。比如说我在一个组件,在一个行里面,我希望他靠左靠右看,靠上靠下都可以通过ancle来微调。当然如果你这个行的话,它没有合并行或者合并列的话,这个N可一般只有左右,左右都上下是没有用的。我们后面给大家去演示一下side,它是管理我们这个控件的一个整体的布局方位。它只有顶部、底部、左边右边,IPIDX和IPIDY是我们共建的一个内内边距,我们待会儿会给大家演示,这是外边距。好,我们现在根据这个布局方式来给大家去演示一下,我们新建一个文件。好,来,我们来看一下。首先就是我们创建一个主窗口from inner report的一个新导入我们的模块。然后这些我们在后续的时候也会强调,大家去记得,这些都是我们的通用的一些代码,就是创建主窗口加一点E它的,比如说我们就是PNCK pack示例。好,然后这是我们的root点,GEOME, TRY角美除以我们窗口大小设置成300 200。好,然后我们再是主事件循环起来就行了。那么LOP好,这样的话我们的这个主窗口就搭建好了。主窗口搭建好之后,我们现在就要往这里面去添加我们的这个控件。我们现在来添加一个按钮控件,我们的疤痕鼻尖,把它整一下主窗口设置一个标题,就是按钮里面的这个文字,就是我们的按钮。好,然后再给它布局一下,这里面我就使用的是这个pack布局了,这单词写错了。好,大家来看下我们的。这个PSK。好,这样的话我们这个按钮就布局好了。那么这里面我们来依次给大家试一下这个angle这个属性。首先第一个anchor,我们比如说我们如果想让它向左靠,那就是left,就是我们这里面走,大家可以看看它的参数,不是lift。来这里面有九个方位,就是我们的什么NWSE就是东南西北。那我现在往左靠,那你想想是不是应该是ES4W对不对?好,这里面的话有两种表达方法,你可以使用大写的W但是这个大写的W的话,它取决于你这个打包方式。如果你的打包方式是这样的。那么你就不能使用大写,直接使用大写是错的,你应该是啊TK点W。好,那么我们这里面就给大家推荐的是一种参数,就是小写的。这样的好处就是我们无论这个导播方式是怎么给它,可以使用小写就行了。好,我们来看一下,大家看到了吗?刚才是按钮居中,现在已经靠左边了。那我们要靠右边的话就是一好,那我们要如果打S,南边看行不行,南边就其实就居中。那我们是啊比如说我们的什么N,就是我们在北边其实也是居中。它其实你可以这么理解,就是我们就相当于而是这按钮它是一个在这个轨道里面来回滑动,除非是你后面,如果说你这个上下预留了空间,那么你这个按钮就可以上下左右还有八个方位去动都可以。但是目前这个anker考察的特别少,这个大家可以放心。我们来再看下一个,就是我们的这个side布局。Side的话它的主要是四个方位,一个就是我们的什么top是顶部。我们还有一个方位就是我们的这个root是我们的什么?右侧居中大家看到了吧?都是居中的,默认都是居中的。比如说我们lift就是左侧居中好了,我们就是button BOTTON bottom就是我们的这个下面是居中的。好,那么这就是我们的这个萨的布局。再看我们下面的这个,我们的这个IPDSO和IPADY。比如说如果你觉得这个按钮是有点小,对不对?我们希望这里面的文字距离外屏框稍微大一点的,我们就给个内边距。比如说给个20,IPADY给个20,来我们来看一下。大家有没有发现这个按钮是不是变大了?就是因为我们这个按钮里面的这个文字距离这个外边框,就是距离这个是。距离我们这边的是距离左侧是20,距离上侧的这个边宽是20,就这个意思。好,再看我们的这个,这是我们的IPDS和IPDY。我们再来就给大家去创建一个我们的这个按钮。好,我们就是让这个按钮就不要是啊在底部了,就一起都放在我们的这个什么就是这样,就不要放在底部,就让它自上而下默认居中布局。好,那这时候同学们我假设我希望这个按钮一距离上面这个按钮距离来个30的话,那我们就使用PADY等于一个30就行了。来我们来看一下是不是拉开了一个30的距离,我们来给大家举画一下,就是从这儿到这儿是30的这个距离。好,那么注意,我们如果说那个设置的PIDY是30,指的是上下各30,就是从这儿到这儿一共有30,就是这上面30,这下面30。你比如说我现在把这个PIDY放在我们的这个上面的这个上面放在这。那大家看一下,你看这上面是不是上下各30这个对称的产生的是上下30的1个距离。那我们来演示一下我们的这个水平方向的,我们可以巧妙的是让我们的set也是。靠左lift,我们这边的这个按钮也是set一下也是靠左。这样的话这两个按钮就会在同一个同一个水平线,为什么呢?因为你让按钮也是我们的放在这个左侧居中,而我们按钮一也是在左侧居中,那么它两个人是不是就是挨着在一块儿的,是吧?就在同一行上面。好,这个属性大家用的比较多。比如说这一个side,这也是一个side,就是在这这两个按钮就是在同一条水平线上面了。好了,这时候我们来给大家演示,比如说我想给按钮一按钮来一个左右各30的1个水平距离,那我们就是PIDX是30。好,大家看一下是不是左右两侧都是30。好,那么这些常用的属性我们就讲到这儿。目前考的最多的就是我们的side,以及我们的是外边距,外边距考的最多,内边距一般很少,因为很少会设置这个按钮的这些大小之类的。好,那么我们讲完这个pack布局之后,我们来看一下一个练习题。首先我们第一步导入我们的这个模块,我们这里面使用的是啊from TK der import新的模式。这样的话好处就是我们直接通过TK这个构造函数去构造出一个主窗口。给这个窗口设置一个标题,我们再给这个窗口设置一个窗口大小,这里面的窗口大小是400 200。然后我们现在创建了一个按钮和按钮一,我们给这个按钮布局起来。布局起来之后,大家可以看一下,我这里面还设置了一个我们的这个内边距,水平方向的是20,那么那个PIDY指的是外边距上下各30。好,那么在看我们的按钮2,我们的按钮二它的布局是左侧居中,它的水平是40,水平距离是40,而我们的按钮三也是左侧居中。好,那么运行完之后就是我们右侧的这样的一个界面。大家可以看一下,是按钮一,它是默认是居中是那个布局的。然后我们这个设置了一个内边距是20,所以你看,所以这个按钮明显感觉是不是左右两侧各向外拉了20PX再看这个按钮一,本来默认是在这个靠顶上挨着的,但是为什么下沉到这儿呢?是因为我们这儿还设置了一个正向的一个外边距30,那么这个按钮的话就会上下各拉开30,就是我箭头的指示的。好,再看我们按钮二和按钮3。按钮二按钮3的话,它也是,我们的这个两者都是啊靠左的,就是靠左居中的。所以你两个人是在同一条线上面,而我按钮二又设置了一个水平方向的一个距离40,所以按钮二是不是左右各拉开了一个40?大家对这些属性了解之后,我们就可以后面去做一些简单的布局的题目了。好,我们接下来去讲一个我们的题目给大家看一下。首先第一个就是我们的这个pg布局,这个是我们五校联考的一道题目。大家可以看看这个题目。首先他说让我们编写这个GI的一个程序,窗口大小是300乘200。这里面的话说公里数不超过5公里,超过部分按照每公里1.5元去计算。这个题目就是一个典型的我们的pack pack布局。当然这里面有一些控件,目前我还没讲。比如说我们看一下,这里面我们分析下,第一个是我们的什么label空间,这个label空间。第二个是我们的什么entry输入框。还有一个大家注意一下,其实这儿还有一个空间,就是。我们在这儿还有一个空间。只不过是一开始因为我们没有点结算,所以这个空间它里面没有文字。然后再是一个我们的什么按钮,所以整整讲我们这个界面里面有四个空间,对不对?让我们来写一下,我们只是为了画出来这个图,我们暂时不去算这个题目,因为我们后面去放到后面去讲,我们来去给大家演示一下。首先我们还是一样导入我们的这个模块。第二步创建主窗口,第三步设置我们的这个窗口标题。标题是出租车计算结算。好,然后再是我们的root点GEOMETRY,这里面它告诉你的窗口大小是300 200,那我们就是300 200。然后再是我们的主世界循环起来,这样的话我们这个界面就搭建好了。接下来我们就是布局我们的控件。第一个是我们的label标签,那我们就LAB label一下road testing,这个是请输入公里数。好,我们给它布局一下。那你也可以直接布局,直接布局一下也可以。好,然后接下来就是我们的这个。第二个是我们的entry,就是我们的文单单行文本输入框,我们就是ENTIY entry。我们这里面的话是没有文字的,我们就把它布局,就赋给一个变量E给它布局一下。好,然后再是我们下面还有一个我们的这个label。这个label的话其实我们后面学到后面我们也知道就是这个lab。由于你要后面要去修改里面的内容,所以你是要去给它附一个变量保存的,方便我们后面去随时调用这个对象去修改里面的文字。那么就是LB点PICK布局一下,再是我们的这个按钮,这个按钮其实你也可以直接写完之后布局就可以了,因为我们后面不需要调用这个按钮的这个对象,我们只需要给按钮绑定一个函数就行了。这个我们后面会去讲,当然你也可以把它付给一个付给一个这个变量也是没有问题的,那这样的话我们这个就写完了,我们来看一下效果。好,那这里面的话如果比如说我输入的是我们的这个六点击结算,那这样的话就显示我们的这个交通费了。后面我们就会讲一句这个后端的逻,我们今天就讲这个界面的一个搭建。好,再看我们的这个第二个布局,gay的布局。这个gray的布局是一种基于网格的布局管理方式,相当于把我们的窗口划分成一个个的行和列,然后组成的当使用gray的布局的时候,表格里面的每一个单元格都可以放置一个控件,从而实现对界面的一个布局管理器布局管理。首先第一个是我们的函,注意我们的函是默认从零开始的。再是我们的什么合并函,这个是我们的列。合并列这个可能在这里面我讲的话可能大家没有很直观的去理解,我们后面会以例题的形式带大家去了解一下。然后这个也是跟前面一样,内边距外边距这里面还有一个属性叫sticky。它就相当于我们前面学的pack里面的一个anchor,是一种对齐方式。我们一般是可以左对齐、右对齐,上下对齐都是可以的。好,那我们来讲一下这个grade布局的练习题。首先第一题,我们这里面的按钮一、按钮2、按钮3、按钮4。首先按钮一我们刚才讲了,我们按还是从零开始的。我们先分析一下这个界面,我们二六一明显是在第零坎,就是我们的什么地灵砍对吧?又是处在一个第零列,我们来看第零行,然后再是第就是第零列。第零行的第零列是不是?那我们的按钮二的话是在第零行的什么第一列?这是202第0第零那个是第零行的第一列,而293是不是应该是处在一个什么?我们的这个第零行第一行的第一行的第零列第一行的第一列是不是?所以说我们分析完之后我们来写。首先这也都是一样,这些代码其实你看,我们把这些代码去掉之后,我你看这些代码是不是通用的,就是我们构建主窗口的代码是通用的,按钮一按钮2,按钮一第零行的第零列,按钮二第零行的第一列,按钮三是第一行的第零列,按钮四是我们的这个第一行的第一列,这里面我写错了,我把它改一下。好,这样的话,我们这个就写好了。我们再看下一题,例这个题目的话,我们考察的其实就是我们的什么合并函,为什么呢?你看201相对于202203来说,它是不是相当于合并了两行,对吧?那我们可以怎么去分析它呢?首先这个按钮2的话,你可以认为它处在是第零行的第一列,是第零行的第一列。而按钮三是处在这个第一行的第一列,是不是?而按钮1201首先我们要合并两行,首先我们要合并两行,然后它所在的是第零列,是不是?你看首先2.1我们要合并两行,处在第零列,它它合并了两行。那202的话,我刚才分析了就是第零行的第一列,而263的话处在是第一行的第一列。好,再看我们给大家演示合并列。合并列的话你比如说我们按钮一是不是就相当于我们按钮2、按钮三来说,合并了两列,两列之后居中,合并居中。好,那么我们的按钮一是应该是在第零行的合并两列,第零行的合并两列。而我们的按钮2的话,是在第一行的第零页,按钮三也是在第一行的第一列。这样的话就写出来了这样的一个形状的。我们这个其实合并陉和合并列在这最终的考察过程中的话,它用到的不多,一般都不会用到。我们含和列就够用了。我们来看一个经典的练习题。大家看一下这个题目。这个题目的话,我们首先他已经把代码写好了,这个就是一个标准的考试的题目。他把这些主体框架代码写好,你只需要在这里面去把一些这个空给它填好就行了。比如说这里面大家应该填什么?我们看啊第一步导入我们的这第二步又导入了我们的mx模块。那我们要创建主窗口就是TK ter点TK。好,然后还有一个空就这个t der点button r text。大家知道这几个test指定的是我们的什么?就是我们的这个文本的判断是不是,所以这个四分就拿到手了。接下来就是完成这里面的自定义的函数的模块,就是我们通过按钮F绑定,因为我们要完成这个自定义的函数F就可以了。说白了就是点击判断计算出这个三角形的面积。这个题目大家可以看一下,我们来一起分享。如果让我们来写的话,我们该怎么去写这个界面,我们这个界面其实也很好写。我们首先第一个就是第这个请输入第一条边,那就是第是我们的什么第零行的第零列。第一个这个输入框是我们的什么?好,我们来看一下。这个输入框它应该所在的是我们的什么?就是D0盘的第一列。那这个的话是不是应该是处在我们的什么第一行的第零列,这个是啊我们的这个第一行的第一列,这个是第二行。第二,这是我们的第二行的第零列,这是我们的第二行的第一列。而这个标label标签的话是我们的这个第三行的第一列,而这个按钮的话是第四行的第一列。是不是这样的话我们就可以构造出这样的一个界面了。当然这一题它并不是让我们去写,那我们来给大家写一个,我们今天主要还是讲的是界面,后面我们去讲控件的时候会去讲这些练习题,我们来给大家写一个。好,我们来写一个。首先咱们我们把这个主体框架代码直接复制过来了,我就不写了。因为大部分都是一样的,我们把它拿过来,把中间的这个部分去掉就行了。因为我们这个主体这个主框架,就是我们的这个主张口写。好了,接下来就是我们的这个label。LB road逗号TST请输入第一个条边。好,然后再是给它grade布局一下我们的这个第零行的。第零列,这是我们的这个输入框,e entry。好,那么这样的话就写好了,大家可以看看,这里面还没有布局,我们布局GRD1下。然后再是我们的这个弱为我们的这个零列为我们的是一,我们来看一下。好,写好第一个之后,我们可以把这个复制两份是不是就可以了?因为他们代码都一样,无非改的就是布局,把它复制一下来,复制一下,复制一下,改一下就行了。那这个是我们的什么?第一行的第零列,这个是第一行的第一列,这是第二行的第一列,这是第二行的第一列。我们看一下,是不是快速的就复制好了。所以这个界面我们在考试的过程中复制能复制代码就不要自己手敲。因为如果手抄的话,很可能出现的就是你这个单词,或者说某一个中文写错了,或者说之类的。好了,接下来我们就是我们的这个label标签,由于这里面一开始是没有文字的,我们给它布局一下就行了。LB点GRD Green一下,然后就是我们的raw可以往上看,你看我们已经写到第二行了,那接下来不就是第三行吗?那就是我们的什么第零列,第一列。好,然后再是我们的这个按钮。按钮的话,我们就直接写了判断。点加2D然后就是我们的什么,若我们的这个四列为我们的。为我们的一这样的话我们这个界面就写好了,大家看一下,这样的话我们就快速把这个界面给它搭建好了。我这上面还有一个左上角的文字没改,这判断三角形。这样的话我们的界面就写好了,是不是?所以这个就是一个典型的grade布局。好,接下来我们来讲一下我们的这个place布局。这个place布局的话跟前面两个布局比它更加精细化。因为它是通过坐标来去实现我们的窗口的一个位置的这里面我们其实只需要去了解这个X和Y就行了。其他的这些参数,比如说宽高,比如说对齐方式,这些前面都有的。这个啊不这个不一样,就是IERX和IELY是相对的,就相当于你这个在水平方案,就是相当于跟窗口在水平和垂直方案的一个相对位置,它的取值是0.0到1.0。比如说如果是0.5的话,那说明你的空间是不是就在水平面居中的位置。同样的如果RULY是0.5的话,是不是就垂直方向居中位置这个用到的都不多。因为我们基本上都不会去用place布局去写的,人家都已经基本上给你好了,给你给好了,你只需要完成。我们刚才说这个,我们刚才也举过例子了,就是类似于于我们这样的一个题目。大家看下,就是人家已经把place布局写好了,你只需要完成它的一个程序,程序就是函数的编写就行了。好,我们再来看一下这个下面的一个例子。首先大家看一下按钮一,我们这儿的坐标是给了30。大家有没有发现我给的这个参考点是我们控件的左上角。比如说这个是一个按钮一,那么这个按钮一的左上角距离左边是30,距离上面是30。那么有人会讲,如果我想要设置成这个控件的中心点的位置怎么办呢?我们这里面有一个参数,大家看一下,我们上面有一个参数叫ancle,这个参数就可以设置我们控件的一个参考点。如果我们要设置成center,那么它就会中间的位置,这个我要跟大家说一下,就比如说从这儿出发这儿距离左边的,以及从这出发距离上面的一个距离,当然我们一般默认都是左上角的。比如说我们第一个按钮,它X是30,Y是30,那就距离左边是30,距离上面是30。那按钮2的话,是距离左边是30,距离顶边也是8。不是距离左边是80,距离顶边是82 63,距离左边是130,距离顶边是我们的什么130这1块我写错了,应该是Y改一下。好,那么这个东西就是我们的place布局,它其实就是以坐标的形式来去布局的。这个的话我们只需要了解看懂就行了,你不需要自己手写的。好,那么再看我们的这个主窗口的创建及属性,刚才我们其实一直强调的是主窗口。那我们来看看到底主窗口该怎么搭建,对吧?主窗口是一切控件的基础,也就是说我们只有主窗口了,你才有一些部件零部件件往上面放。这些零部件就相当于是我们发动机上的一个部件,齿轮、链条、螺丝等等的。你只有有了这台发动机机器,你才能把这些东西放上去。同样的如果你要画画,你必须要有画板才能画,对不对?那画板布置好之后,你上面的画是不是就相当是怎么去布局,取决于你自己。好,我们如何快速的去创建一个主窗口?我们其实可以通过三行代码就能够创建一个主窗口。好,通过这三个代码的话,大家有没有发现我没有设置左上角的标题,我也没有设置窗口的大小。那么这次会怎么办呢?这个是不设置窗口标题,它默认是TK大家可以看一下,这个默认左上角的标题是TK这个曾经考过一道选择题,大家也可以了解一下。然后如果不设置窗口的大小的话,就会自适应,就是根据你当前的空间来自适应调整。比如说如果你这个里面只有一个空间,那么它的窗口就按照你的一个空间的大小来布局。我们来看一下,给大家演示下。好,我们首先第一步导入我们的这个模块。第二步创建主窗口,就是说TK创建主窗口。第三步我们来弄一下,这个的话就快速的三行代码创建一个主窗口了是吧?默认左上角的就是TK比如说我们布局一个我们的这个按钮。我们给它用pack布局。好,那这样的话大家可以看到这个窗口就是这么小。因为它是跟自适应的,就根据你当前的这个控件个数以及大小来设置动态设置这样的一个窗口大小的。当然我们一般不会让它自适应,就会设定好一个固定的窗口大小的值。好,那么再看一下我们这个主窗口的一些常用的属性。我们以上罗列的这些属性都是大家必须要掌握的。就是我们都平时考的高频次的一些参数,我们来给大家依次去介绍一下这些参数。首先第一个是road cutter,就是我们设置这个窗口左上角的一个标题。第二个就是我们设置我们的窗口,它能否被拉伸。这里面有两个参数,一个是宽一个是高。这个宽表示的是在水平方向不能拉伸,如果你把它设置成false,就表示水平方向不能拉伸。如果高设置成false,表示在垂直方向不能拉伸。Road点角me tree。就是我们窗口大小这里面我们还可以在后面加初始的显示位置,一般我们这个窗口是在这个位置显示的。但如果有的人说我想在这个位置或者在这个位置显示,那么你就可以设置它的一个初始的显示位置。Roads点quid就是我们退出窗口,这里面除了有roads点quid以外,还有load点destroy和quid都可以退出我们的窗口。这个是主世界循环这行代码,如果没有的话,我这个控件这主窗口它是显示不了的。然后这个就是设置我们这个窗口里面的一些任何属性,包括我们后面学习某些控件,设置控件里面的属性,都可以通过这个conflict来设置。我们来给大家去依次去举例去讲解一下。我们首先已经创建好了一个我们的一个主窗口,我们给大家设置一个,首先第一个标题,标题的话我们左上角是,比如说我们是随便写一些测试好,那这样的话我们左上角的标题就取消好了。这里面的话我们这个窗口是可以横着拉,正着拉都是可以的那我们现在要如何做?比如说我不想让别人去横向拉我的一个窗口,那我们就可以设置一下rode your resistance。这里面的话我们的宽是你可以宽,不想让就是我们的水平方向不想让人家拉,就设置成false那么高,你可以触。这样的话大家可以。看一下。它的水平方向是拉不了的,只有正反向才可以拉的。好,如果你水平和正轴方向都不想让人家拉那你就直接都设置成我们的force。有没有看到这个已经变成灰色的了,也就是说你横向纵向都不能拉。这个考试会考的,大家一定要记住。再看我们的这个,就是给可以给这个窗口设置一些,比如说roll点config下,我想给我们的这个窗口设置个背景色,设置成一个红色red一下。当然这里面除了背景色以外还有好多,我们这里面只是举个例子。还有一个就是我们的这个road demand do版。如果没有这行代码,大家看一下,大家有没有发现我运行完了,但是什么东西都没看到。原因就是因为没有让这个主事件循环起来,所以它显示完之后就退出了,一闪而过了。所以这行代必须要有。这样的话有了之后,它就会让我们这个主事件一直循环在,就是让这个窗口一直显示在这里面。大家有没有发现,我每次运行窗口的时候,它都显示在我这个位置。那如果我要设置窗口的初始的显示位置该怎么办呢?对吧?那我们这里面再加一个load点,GOMETRY,这个就是我们设置窗口大小的。同时还可以设置我们的这个初始的显示位置。这里面我初始的显示位置是400 500,也就是说这个左上角距离左边是400,距离顶上是500。这个一般如果考的话,考试的时候会告诉你这些参数。前面是窗口大小,后面是初始的显示位置。还有一个就是我们的这个quit,这个我们需要配合一个按钮来去实现它。那我们就创建一个按钮。好,我们给按钮绑定一个函数,我们就在这上面写退出。好,我们先给它绑定一下CMMNDTC。这里面有一个command属性,就是绑定回调函数的,绑定我们退出的这个函数。我们load点quit一下。这里面我按钮没有布局,大家没有看到按钮都没显示出来。所以说大家不要忘了去给这个空间去进行一个布局。好,刷新完之后大家看到这有一个按钮,我们点一下就退出了。这里面除了road点quite以外,我们还可以是destroy,这样也可以。点一下退出,我们也可以直接是QUIT也行,这样也是退出的。好,那么这个就是我们的这个主退出窗口,一般我们不需要去绑定函数的,一般我们考试的时候直接在这儿写就行了。比如说我们要退出,那就是rose点quit,这样的话非常的方便,使得我们的代码也变少了。来也是可以的,就是可能会把这空出来让你去填。那也如果说不是填这个空的话,你也可以直接root点quid在这儿写一下,就可以退出我们的一个主窗口了。好,那么这个就是我们的必备的一些属性,大家需要记住的这是我们的例题,刚才我已经讲了。那我们来看看我们控件常考的一些通用属性有哪些。首先第一个就是我BG就是背景色。其实我刚才在设置我们的这个主窗口的时候已经用过了BD就是我们控件的边框宽度默认是两个像素。这个的话你设置比如说你设置的再大一点,可能还看不到效果,它需要配合你这个边框样式来实现的。这里面的话我们参考的有我们的这个BG背景色found字体颜字体的样式,以及我们的什么宽高,还有我们的字体颜色,还有我们的这个state状态。这个状态的话一般主要用于我们的这个按钮控件以及我们的这个test,就是显示的文本。还有就是我们的这个config这个也很重要。我们来依次给大家演示一下这个常常考的一些控件。我们这里面的话就以这个按钮为例,就是以这个界面的按钮来为例。首先比如说我们要如果设置这个按钮的背景色,我们可以给一个BG比如说背景色是绿色。好,这个背景色是不是就变成绿色了,那么我们还可以设置这个窗口的。这里面看着感觉我把这个上面这个关掉,看着更清晰一点。来这个按钮是一个绿色的,是不是?我们还可以设置按钮里面的文字,比如说我设置一个按钮。的文字就是宋体。18号字体,我们还可以加粗一下,这其实就是一个类似于元组的形式。这样的话你看这个文字就变成18号字体加粗了,然后是宋体的这里面除了这种表达方式以外,还有一种表达方式就是这样写这种方式的话曾经考过一次,就是把它放在字符串里面,每个属性之间用空格隔开,这种写法也是可以的。好,这个大家稍微留意一点。然后还有一个就是我们的BD这个BD刚才讲了,它默认是两个像素,你设置成五个像素的话,大家可以看一下,看着是不是有一点明显,是不是它这个我们还可以设置这个外边框的一个样式,这里面的话样式有relief leave的话,我们默认就是比如说我们设置成group。这个考的就比较少了。好,大家可以看到它这个边框的样式明显不一样。这里面我就举到这里面,因为它这个边框样式的话基本上不考,主要我们来给大家讲一下state。这个state的话默认是我们的Normal,那NYMER Normal就表示正常的。这个Normal如果是正常的话,大家可以去点击的那如果我把它设置成disable的。大家有没有发现这个按钮是点不了了,因为变成灰色的就表示不可用的。所以这个state这个属性主要用于我们的按钮里面的。在别的地方用的话它都不好使,就只有在这个state里面用是可以的。再看我们的这个tag,就是我们的这个config。这个config就是设置我们这个里面的一些按钮里面的所有的一些通用属性的。我们后面再再讲的时候再去具体讲讲,反正就是它设置我们按钮里面的一些属性的。好,还有一个宽高,这个宽高我们一般也不会去设置。因为你看我们这里面字体,如果是指30号字体,这个按钮是不是又变大了是吧?它是自适应的那如果你把它这个按钮的这个宽给它设定死之后,那么它这个后面可能会出现,你比如说你的文字,文字越大可能它的显示不全。我们这里面别墅我拉宽高设置小一点。好,那比如说我来设置,把这文字设置大一点,设置成50号字体。好,设置50号字体还是可以的那我这里面给它设置小一点,给它设置2。好,有没有发现它的文字都显示不全了?一般我们是不会设置这个宽高的,因为是限定好宽高之后,就相当于把这个按钮大小就已经设定死了,我们一般都是自适应的。这里一些属性常见的一些属性我就介绍到这里面。这里面我们再强调一下BG以及我们的front FG还有这个state text cavegn这些属性我们后面在很多空间里面会反复使用,大家只要把这些掌握就行了。比如说像这个宽高,我们的B那个BD,还有我们的relief,这个用到的非常少。基本上有用到的话也只是让你阅读这个代码,你只要认识他就行了。我们今天这些布局管理器以及主窗口和参考的一些属性就讲到这儿。我们下节课会给大家去讲我们考纲上常考的这个八个控件。每个文件我们都会讲它对应的创建方式,以及它对应的一些属性和方法。我们也要去掌握这些属性和方法,我们今天就讲到这儿。