python编写一个基于tkinter模块的GUI程序,python在tkinter的gui中画图

  python编写一个基于tkinter模块的GUI程序,python在tkinter的gui中画图

  本文主要介绍了PythonGUI的tkinter布局管理教程,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

  00-1010pack公共属性pack类提供以下函数(由组件实例对象调用)。grid类提供了以下功能(由组件实例对象调用)。place类提供了以下功能(由组件实例对象调用)。所谓布局是指控制表单容器中各种控件(组件)的位置关系。

  tkinter 共有三种几何布局管理器,分别是:

  布局包网格布局位置布局包布局

  使用pack布局,组件将被添加到容器中,第一个添加的组件在顶部,然后依次向下添加。

  来自tkinter import *

  root=Tk()

  #创建三个标签并将它们添加到根表单中。

  #Label是用于显示文本或图片的组件。

  Label(root,text=pack1 ,bg=red )。包装()

  标签(root,text=pack2 ,bg=blue )。包装()

  标签(root,text=pack3 ,bg=green )。包装()

  root.mainloop()

  如图所示:

  

目录

  属性名称属性简单析取值指示填充设置组件是水平填充还是垂直填充X,Y,BOTH和NONEfill=X(水平填充)fill=Y(垂直填充)fill=BOTH(水平和垂直)NONE不填充扩展设置组件被扩展。当该值为YES时,side选项无效。该组件显示在父容器的中央;如果填充选项为BOTH,则填充父组件的剩余空间。默认情况下,将组件的对齐设置为无扩展是,否(1,0)扩展=是扩展=无边。左、上、右、下的值分别是左、上、右、下ipadx,ipady。设置X方向(或Y方向)的内部间隙(子元件之间的间隔)以设置数值。默认值为0,这是一个非负整数。为单位像素padx和pady设置x方向(或y方向)外部间隙(与其并列的组件之间的间隔)可以设置数值。默认值为0,为非负整数,单位为像素锚点选项。当可用空间大于所需大小时,它决定了组件在容器中的放置位置。n、E、S、W、NW、NE、SW、SE、CENTER(缺省值为CENTER)表示。另外,当界面复杂度增加时,要达到一定的布局效果,需要分层。

  从tkinter导入* #注意模块导入的方式,否则代码会不一样。

  App:级

  def __init__(self,master):

  #使用框架添加一层容器

  fm1=框架(主)

  #Button是一个按钮组件,类似于Label,只是有响应点击的功能。

  按钮(fm1,text=Top )。填充(边=顶部,锚=W,填充=X,扩展=是)

  按钮(fm1,text=Center )。包装(侧面=顶部,a

  nchor=W, fill=X, expand=YES)

   Button(fm1, text=Bottom).pack(side=TOP, anchor=W, fill=X, expand=YES)

   fm1.pack(side=LEFT, fill=BOTH, expand=YES)

   fm2 = Frame(master)

   Button(fm2, text=Left).pack(side=LEFT)

   Button(fm2, text=This is the Center button).pack(side=LEFT)

   Button(fm2, text=Right).pack(side=LEFT)

   fm2.pack(side=LEFT, padx=10)

  root = Tk()

  root.title("Pack - Example")

  display = App(root)

  root.mainloop()

  如上,创建一个Frame容器fm1,将三个垂直排列的Button组件使用pack布局放入fm1容器中,然后创建fm2容器,同样将三个水平排列的Button组件放入,最后将两个Frame容器当做组件,使用pack布局放入根窗体容器中。

  如此分层布局,实现了相对复杂一些的界面需求。

  

  

  

pack类提供了下列函数(使用组件实例对象调用)

  函数名描述pack_slaves()以列表方式返回本组件的所有子组件对象。pack_configure(option=value)给pack布局管理器设置属性,使用属性(option)= 取值(value)方式设置propagate(boolean)设置为True表示父组件的几何大小由子组件决定(默认值),反之则无关。pack_info()返回pack提供的选项所对应得值。pack_forget()Unpack组件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option, …),将其显示。location(x, y)x, y为以像素为单位的点,函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1, -1)表示不在其中size()返回组件所包含的单元格,揭示组件大小。

  

grid布局

  grid布局又被称作网格布局,是最被推荐使用的布局。程序大多数都是矩形的界面,我们可以很容易把它划分为一个几行几列的网格,然后根据行号和列号,将组件放置于网格之中。使用grid 布局时,需要在里面指定两个参数,分别用row 表示行,column 表示列。需要注意的是 row 和 column 的序号都从0 开始。

  

  如下图,假设将界面分成网格。

  


  

  

grid属性设置

  属性名属性简析取值取值说明row、columnrow为行号,column为列号,设置将组件放置于第几行第几列取值为行、列的序号,不是行数与列数row 和 column 的序号从0开始,但是,column的默认值是0,row的默认值是下一个编号较大的未占用行号sticky设置组件在网格中的对齐方式(前提是有额外的空间)N、E、S、W、NW、NE、SW、SE类似于pack布局中的锚选项rowspan组件所跨越的行数默认值为1取值为跨越占用的行数,而不是序号columnspan组件所跨越的列数默认值为1取值为跨越占用的列数,而不是序号ipadx、ipady、padx、pady组件的内部、外部间隔距离,与pack的该属性用法相同同pack同pack

  

  

grid类提供了下列函数(使用组件实例对象调用)

  函数名描述grid_slaves()以列表方式返回本组件的所有子组件对象。grid_configure(option=value)给pack布局管理器设置属性,使用属性(option)= 取值(value)方式设置grid_propagate(boolean)设置为True表示父组件的几何大小由子组件决定(默认值),反之则无关。grid_info()返回pack提供的选项所对应得值。grid_forget()Unpack组件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option, …),将其显示。grid_location(x, y)x, y为以像素为单位的点,函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1, -1)表示不在其中size()返回组件所包含的单元格,揭示组件大小。

  

place布局。

  最简单最灵活的一种布局,使用组件坐标来放置组件的位置。但是不太推荐使用,在不同分辨率下,界面往往有较大差异。

  

  

  

place属性设置

  属性名属性简析取值取值说明anchor锚选项,同pack布局默认值为 NW同pack布局x、y组件左上角的x、y坐标整数,默认值0绝对位置坐标,单位像素relx、rely组件相对于父容器的x、y坐标0~1之间浮点数相对位置,0.0表示左边缘(或上边缘),1.0表示右边缘(或下边缘)width、height组件的宽度、高度非负整数单位像素relwidth、relheight组件相对于父容器的宽度、高度0~1之间浮点数与relx(rely)取值相似

  bordermode 如果设置为INSIDE,组件内部的大小和位置是相对的,不包括边框;如果是OUTSIDE,组件的外部大小是相对的,包括边框 INSIDE、OUTSIDE(默认值INSIDE) 可以使用常量INSIDE、OUTSIDE,也可以使用字符串形式"inside"、"outside"

  

  

place类提供了下列函数(使用组件实例对象调用)

  函数名描述place_slaves()以列表方式返回本组件的所有子组件对象。place_configure(option=value)给pack布局管理器设置属性,使用属性(option)= 取值(value)方式设置propagate(boolean)设置为True表示父组件的几何大小由子组件决定(默认值),反之则无关。place_info()返回pack提供的选项所对应得值。grid_forget()Unpack组件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option, …),将其显示。location(x, y)x, y为以像素为单位的点,函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1, -1)表示不在其中size()返回组件所包含的单元格,揭示组件大小。

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: