精华内容
下载资源
问答
  • 在很久之前,我发过一篇...tkinter 共有三种几何布局管理器,分别是:pack布局,grid布局,place布局:  “Grid”兼具功能,灵活性和易用性,以及它与当今布局自然匹配(依赖于小部件对齐)使其成为一般...

    在很久之前,我发过一篇《tkinter模块常用参数》,里面已经几乎涵盖了tkinter的大部分教程。
    好吧,其实也就是上一篇而已啦。

    所谓布局,就是指控制窗体容器中各个控件(组件)的位置关系。
    tkinter 共有三种几何布局管理器,分别是:pack布局,grid布局,place布局:
      “Grid”兼具功能,灵活性和易用性,以及它与当今布局的自然匹配(依赖于小部件的对齐)使其成为一般用途的最佳选择;
      “pack”也非常强大,但更难以使用和理解;
      “place”让您完全控制每个元素的定位;
      我们甚至可以看到像窗格,笔记本,画布和文本这样的小部件可以充当几何管理器。
    所以,这一篇我们就只讲一个管理器就够了——grid(网格)布局管理器。

    grid属性设置:

    属性名 属性简析 取值说明
    row、column row为行,column为列 从0开始
    rowspan 组件所跨越的行数
    columnspan 组件所跨越的列数
    ipadx、ipady、padx、pady 组件的内部、外部间隔距离,默认是0 非负整数,单位为像素
    in_ w2必须是w创建时指定父插件的子插件 用in_=w2可以将w登记为w2的child插件
    sticky 对齐方式,默认居中 东南西北中九方向+

    1346146-20190108163818540-1657567595.png

     

    grid类的函数(使用组件实例对象调用):

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

    1346146-20190122105736780-1919015756.png

     

    特别鸣谢:

    TkDocs

    转载于:https://www.cnblogs.com/WoLykos/p/10238010.html

    展开全文
  • 在使用Tkinter模块编写图像界面时,经常用到pack()和grid()进行布局管理,pack()参数较少,使用方便,是最简单的布局,但是当控件数量较多时,可能需要使用grid()进行布局(不要在同一个窗口中同时使用grid()和pack()...

    在使用Tkinter模块编写图像界面时,经常用到pack()和grid()进行布局管理,pack()参数较少,使用方便,是最简单的布局,但是当控件数量较多时,可能需要使用grid()进行布局(不要在同一个窗口中同时使用grid()和pack()!!)。

    grid使用方法和主要参数:

    row=x,column=y:将控件放在x行,y列的位置。注意:

    如果不指定参数,则默认从0开始。

    此处的行号和列号并不是像在坐标轴上一样严格,只是代表一个上下左右的关系,如在行号“1”没有出现的情况下:

    Label(master, text="First").grid(row=0)

    Label(master, text="Second").grid(row=1)

    Label(master, text="First").grid(row=0)

    Label(master, text="Second").grid(row=2)

    效果都是一样的:

    2.columnspan: 设置单元格横向跨越的列数,即控件占据的列数(宽度); rowspan:设置单元格纵向跨越的行数,即控件占据的行数(高度)。

    3.ipadx:设置控件里面水平方向空白区域大小; ipady:设置控件里面垂直方向空白区域大小;

    padx:设置控件周围水平方向空白区域保留大小; pady:设置控件周围垂直方向空白区域保留大小;

    4.sticky:默认的控件在窗口中的对齐方式是居中。可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上对齐/下对齐/左对齐/右对齐,可以单独使用N/S/E/W,也可以上下和左右组合使用,达到不同的对齐效果,如:

    from tkinter import *master=Tk()

    master.geometry(‘300x130‘)

    e1= Button(master,text=‘First‘,height=2,width=7,fg=‘red‘)

    e2= Button(master,text=‘Second‘,height=3,width=13,fg=‘blue‘)

    e1.grid(row=0, column=0)

    e2.grid(row=0, column=1)

    mainloop()

    View Code

    窗口内有两个按钮,宽度高度均不相同,可以看到它们的对齐方式是居中显示:

    如果想让它们在同一行上下对齐,可以设置sticky=N+S,意为顶端和低端都要对齐:

    from tkinter import *master=Tk()

    master.geometry(‘300x130‘)

    e1= Button(master,text=‘First‘,height=2,width=7,fg=‘red‘)

    e2= Button(master,text=‘Second‘,height=3,width=13,fg=‘blue‘)

    e1.grid(row=0, column=0,sticky=N+S)

    e2.grid(row=0, column=1,sticky=N+S)

    mainloop()

    View Code

    总结如下:

    sticky=N/S/E//W:顶端对齐/底端对齐/右对齐/左对齐

    sticky=N+S:拉伸高度,使其在水平方向上顶端和底端都对齐

    sticky=E+W,拉伸宽度,使其在垂直方向上左边界和右边界都对齐

    sticky=N+S+E:拉伸高度,使其在水平方向上对齐,并将控件放在右边(当两个控件放在同一行同一列时效果明显)

    .......

    还有诸如此类的组合方式根据需要调整。

    在Tkinter模块中,各种控件的大小计量单位并不尽相同,可能需要反复调整才能达到最佳效果。

    注:以上程序代码适用于python3.4.3版本,python2.x可能需要稍作改变。

    展开全文
  • 1 假如设置靠右的垂直滚动条 ,我们需要在上下伸展,靠右布置,只需要将Scrollbar控件的grid布局设置sticky=N+S+E N+S上下伸展 E靠右放置 scro_bar = Scrollbar(stu_add) scro_bar.grid_configure(row=5, column...

    Scrollbar结合grid滚动条能拖拽能使用 sticky属性进行设置的
    1 假如设置靠右的垂直滚动条 ,我们需要在上下伸展,靠右布置,只需要将Scrollbar控件的grid布局设置sticky=N+S+E N+S上下伸展 E靠右放置

    	
    	scro_bar = Scrollbar(stu_add)
        scro_bar.grid_configure(row=5, column=1, sticky=S  + W + N)
        Label(stu_add, text='爱好', font=('fangsong', 13)).grid_configure(row=5,sticky=W,column=0, pady=5)
        tLB=Listbox(stu_add, selectmode=MULTIPLE,font=('fangsong', 13),width=10,height=15)
        tLB.configure(yscrollcommand=scro_bar.set)
        tLB.grid_configure(row=5,column=1)
        for i in range(30):
            tLB.insert(END,str(i))
        result=tLB.curselection()
        tLB.activate(2) #默认激活哪一个索引值
        scro_bar.configure(command=tLB.yview)
    
    ```![在这里插入图片描述](https://img-blog.csdnimg.cn/20200704203645802.png)
    假如设置靠下的垂直滚动条 ,我们需要在左右伸展,靠下布置,只需要将Scrollbar控件的grid布局设置为sticky=E+W+S  E+W左右伸展  S靠下放置
    
    展开全文
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。什么时候使用Grid管理器grid管理器是Tkinter里面最灵活几何管理布局器。如果你...

    Grid(网格)布局管理器会将控件放置到一个二维的表格里。主控件被分割成一系列的行和列,表格中的每个单元(cell)都可以放置一个控件。

    什么时候使用Grid管理器

    grid管理器是Tkinter里面最灵活的几何管理布局器。如果你不确定什么情况下从三种布局管理中选择,你至少要保证自己会使用grid。

    当你设计对话框的时候,grid布局管理器是一个非常方便的工具。如果你之前使用pack进行布局的话,你会被使用grid后的简洁而震惊。与适应很多

    frame来让pack工作不同,在大多数情况下,你只需要将所有控件放置到容器中,然后使用grid将它们布局到任何你想要布局的地方。

    参考下面这个例子:

    使用pack进行布局的话,你不得不使用一些额外的frame控件,而且还需要花费一些功夫让他们变得好看。如果你使用grid的话,你只需要对每个控件使用grid,所有的东西都会以合适的方式显示。

    注意:不要试图在一个主窗口中混合使用pack和grid。

    使用grid进行布局管理非常容易。只需要创建控件,然后使用grid方法去告诉布局管理器在合适的行和列去显示它们。你不用事先指定每个网格的大小,布局管理器会自动根据里面的控件进行调节。

    from Tkinter import *

    master = Tk()

    Label(master, text="First").grid(row=0)

    Label(master, text="Second").grid(row=1)

    e1 = Entry(master)

    e2 = Entry(master)

    e1.grid(row=0, column=1)

    e2.grid(row=1, column=1)

    mainloop()

    运行如下图所示:

    label1占据0行0列,label2占据1行0列,entry1占据0行1列,entry2占据1行1列。

    注意:1.在使用grid方法时,如果不指定column参数,则默认从0开始。

    2.没有被使用的行和列号将被忽略,在上面的例子中如果使用10行和20行,则运行效果是一样的。

    使用sticky参数

    默认的空间会在网格中居中显示。你可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上/下/左/右。如果你想让label靠左显示,你可以设置stricky的值为W。

    from Tkinter import *

    master = Tk()

    Label(master, text="First").grid(row=0, sticky=W)

    Label(master, text="Second").grid(row=1, sticky=w)

    e1 = Entry(master)

    e2 = Entry(master)

    e1.grid(row=0, column=1)

    e2.grid(row=1, column=1)

    mainloop()

    运行效果如下图:

    你同样可以指定控件跨越一个或者多个网格。columnspan选项可以指定控件跨越多列显示,而rowspan选项同样可以指定控件跨越多行显示。

    下面的

    from Tkinter import *

    master = Tk()

    var = IntVar()

    Label(master, text="First").grid(sticky=E)

    Label(master, text="Second").grid(sticky=E)

    e1 = Entry(master)

    e2 = Entry(master)

    e1.grid(row=0, column=1)

    e2.grid(row=1, column=1)

    checkbutton = Checkbutton(master, text='Preserve aspect',

    variable=var)

    checkbutton.grid(columnspan=2, sticky=W)

    photo = PhotoImage(file='2qq.gif')

    label = Label(image=photo)

    label.image = photo

    label.grid(row=0, column=2, columnspan=2, rowspan=2,

    sticky=W+E+N+S, padx=5, pady=5)

    button1 = Button(master, text='Zoom in')

    button1.grid(row=2, column=2)

    button2 = Button(master, text='Zoom out')

    button2.grid(row=2, column=3)

    mainloop()

    运行效果如下图:

    在这段代码中,有一些细节需要注意:

    1.

    我们没有为左边的两个label控件指定具体的位置,在这种情况下,column将会从0开始,而row将会从第一个没有使用的值开始。

    2. 我们队checkbutton设置了columnspan参数,所以它会显示在第二行,并占据第0和1列。

    3. 图像label占用了2行2列,而最后的两个button都只占用了1列。

    附上一个简单的计算器GUI实现:

    展开全文
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。   什么时候使用Grid管理器   grid管理器是Tkinter里面最灵活几何管理布局...
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。注意:不要试图在一个主窗口中混合使用pack和grid(1)标签控件1 from tkinter ...
  • pack布局管理器是早期Tkinter中常用一种布局方式。这种方式应对简单情况很容易,但是随着要求越来越复杂,布局难度会迅速提高。本文介绍另外一种方式:grid布局管理器。grid这个英文单词是格子,网格意思。...
  • Python Tkinter Grid布局管理器详解

    千次阅读 2016-01-18 13:07:26
    Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。 什么时候使用Grid管理器 grid管理器是Tkinter里面最灵活几何...
  • Place 布局就是其他 GUI 编程中“绝对布局”,这种布局方式要求程序显式指定每个组件绝对位置或相对于其他组件位置。如果要使用 Place 布局,调用相应组件 place() 方法即可。在使用该方法时同样支持一些...
  • 1.grid模块中参数 grid模块中参数非常多,常用如下图所示: ...from tkinter import * class Application(Frame): def __init__(self, master=None): super().__init__(master) self.master = master
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。什么时候使用Grid管理器grid管理器是Tkinter里面最灵活几何管理布局器。如果你...
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。 什么时候使用Grid管理器 grid管理器是Tkinter里面最灵活几何管理...
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。什么时候使用Grid管理器grid管理器是Tkinter里面最灵活几何管理布局器。如果你...
  • 本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html @ 箬笠蓑衣Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件...
  • Python GUI之tkinter布局管理

    万次阅读 多人点赞 2017-01-02 23:08:06
    tkinter 共有三种几何布局管理器,分别是:pack布局,grid布局,place布局。 pack布局 使用 pack布局,将向容器中添加组件,第一个添加组件在最上方,然后是依次向下添加。 from tkinter import *root = Tk()#...
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。 什么时候使用Grid管理器 grid管理器是Tkinter里面最灵活几何管理布局器。...
  • pack布局管理器是早期Tkinter中常用一种布局方式。这种方式应对简单情况很容易,但是随着要求越来越复杂,布局难度会迅速提高。本文介绍另外一种方式:grid布局管理器。grid这个英文单词是格子,网格意思。...
  • Grid(网格)布局管理器会将控件放置到一个二维表格里。主控件被分割成一系列行和列,表格中每个单元(cell)都可以放置一个控件。 注意:不要试图在一个主窗口中混合使用pack和grid (1)标签控件 1 ...
  • pack布局管理器是早期Tkinter中常用一种布局方式。这种方式应对简单情况很容易,但是随着要求越来越复杂,布局难度会迅速提高。本文介绍另外一种方式:grid布局管理器。 grid这个英文单词是格子,网格意思...
  • place布局管理器Tkinter支持的第三种布局管理器,它允许程序员直接指定控件的位置和大小。例如下面的代码: from tkinter import *root = Tk()# 绝对位置Button(root,text="绝对坐标摆放1").place(x=20, y...
  • place布局管理器Tkinter支持的第三种布局管理器,它允许程序员直接指定控件的位置和大小。例如下面的代码:from tkinter import *root = Tk()Button(root,text="绝对坐标摆放1").place(x=20, y=10, width=150, ...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

tkinter控件的布局管理器