精华内容
下载资源
问答
  • 1.grid模块的参数 grid模块参数非常多,常用的如下图所示: 示例程序 下面我们以用grid做一个计算器的页面,目标页面如下图所示 示例程序如下: """计算器软件的界面设计""" from tkinter import * class ...

    1.grid模块中的参数

    grid模块中参数非常多,常用的如下图所示:
    在这里插入图片描述
    图片截选自博客

    示例程序

    下面我们以用grid做一个计算器的页面,目标页面如下图所示
    在这里插入图片描述

    示例程序如下:

    """计算器软件的界面设计"""
    
    from tkinter import *
    
    class Application(Frame):
    
        def __init__(self, master=None):
            super().__init__(master)
            self.master = master
            self.pack()
            self.creatwidget()
    
        def creatwidget(self):
            """通过grid布局实现计算器界面"""
            # 定义一个元组,装计算机的每个按键名称
            btnText = (("MC", "M+", "M-", "MR"),
                       ("C", "±", "÷", "×"),
                       (7, 8, 9, "-"),
                       (4, 5, 6, "+"),
                       (1, 2, 3, "="),
                       (0, "."))
            # 第一行显示区域,跨4列,垂直方向外边距为10
            Entry(self).grid(row=0, column=0, columnspan=4, pady=10)
            # 循环创建按钮
            for rindex,r in enumerate(btnText):
                for cindex,c in enumerate(r):
                    if c == "=":
                        Button(self, text=c, width=3)\
                            .grid(row=rindex + 1, column=cindex, sticky=NSEW, rowspan=2, padx=1, pady=1)
                        # sticky=NSEW表示填充整个网格,rowspan表示跨2行
                        # padx=1, pady=1,表示垂直和水平方向的外边距均为1
                    elif c == 0:
                        Button(self, text=c, width=3)\
                            .grid(row=rindex + 1, column=cindex, sticky=NSEW, columnspan=2, padx=1, pady=1)
                        # columnspan表示跨两列,
                    elif c == ".":
                        Button(self, text=c, width=3)\
                            .grid(row=rindex + 1, column=cindex+1, sticky=NSEW, padx=1, pady=1)
                        # 取到"."的时候,将列数+1
                    else:
                        Button(self, text=c, width=3)\
                            .grid(row=rindex+1, column=cindex, sticky=NSEW, padx=1, pady=1)
    
    
    if __name__ == '__main__':
        root = Tk()
        root.geometry("200x250")
        root.title("计算器")
        app = Application(root)
        root.mainloop()
    

    3.运行结果

    在这里插入图片描述

    以上就是tkinter中gridt模块的所有内容,若有疑问,请在评论区留言

    展开全文
  • tkinter-grid布局详解

    千次阅读 多人点赞 2020-07-05 09:08:27
    前文tkinter-pack布局详解介绍了pack布局,相信对tkinter的布局套路有了一定的了解。本文将介绍另一种布局类grid。 同样,展示布局类与控件类的类间关系: 文章目录grid默认分布...

    前文tkinter-pack布局详解介绍了pack布局,相信对tkinter的布局套路有了一定的了解。本文将介绍另一种布局类grid。

    同样,展示布局类与控件类的类间关系:
    在这里插入图片描述

    grid

    grid从字面意思上可以推断,这种布局方式就像网格一样来分布控件。那么具体会呈现什么样的效果,要怎么编码控制呢。同样的套路,通过实例来进行直观的讲解。

    widget.grid(cnf={}, **kw)

    默认分布

    from tkinter import (Tk, Button)
    from tkinter.constants import RIGHT, LEFT, X, Y, BOTH
    
    main_win = Tk()
    main_win.title('渔道的pack布局')
    width = 300 
    height = 300 
    main_win.geometry(f'{width}x{height}')
    # print(main_win.keys())
    
    apple_color = 'Crimson'
    banana_color = 'Yellow'
    orange_color = 'Orange'
    grape_color = 'Purple'
    
    fruit = {'apple':'Crimson', 'banana':'Yellow', 'orange':'Orange', 'grape':'Purple'}
    
    # 默认显示效果
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid()
        print(bt.grid_info())
    
    main_win.mainloop()
    

    print函数的打印信息如下:

    在这里插入图片描述

    可以看出4个按钮默认分布在第0列(column属性),然后依次分布在第0-3行(row属性),列间隔(columnspan)为1,行间隔(rowspan)为1,sticky属性相当于pack的anchor属性但是不完全相同,后面会具体讲解。
    在这里插入图片描述

    从上面的例子可以看出,使用grid布局时,可以想象,在主窗口上 隐式的布满网格(cell),子控件(如,按钮)就会被放在这些网格中。

    column

    指定控件所在的列

    i = 0
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid(column=i)
        i += 1
        print(bt.grid_info())
    

    print函数打印信息如下:
    在这里插入图片描述

    从打印信息中可以看出,apple在第0列第0行;banana在第1列第1行;orange在第2列第2行;grape在第3列第3行。下图的实际呈现效果和打印中的行列信息一致。
    在这里插入图片描述

    row

    指定控件所在的行

    i = 0
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid(row=0, column=i)
        i += 1
        print(bt.grid_info())
    

    print函数打印信息如下:
    在这里插入图片描述

    代码中,我将4个按钮的行都指定为第0行,那么,这四个按钮应该是在第0行紧挨着排列,我们来看下实际效果:
    在这里插入图片描述

    columnspan

    指定每个控件横跨的列数

    i = 0
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid(column=i, columnspan=3)
        i += 1
        print(bt.grid_info())
    

    print函数打印信息如下:
    在这里插入图片描述

    代码中,我将4个按钮的columnspan都指定为3,那么,每个按钮应该是横跨3列,我们来看下实际效果:
    在这里插入图片描述

    rowspan

    指定每个控件横跨的行数

    i = 0
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid(column=i, rowspan=3)
        i += 1
        print(bt.grid_info())
    

    print函数打印信息如下:
    在这里插入图片描述

    代码中,我将4个按钮的rowspan都指定为3,那么,每个按钮应该是横跨3列,从上面的打印信息中其实可以判断,每个按钮都横跨了3行,我们来看下实际效果:
    在这里插入图片描述

    ipadx

    水平方向内边距

    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid()
        print(bt.grid_info())
    
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid(ipadx=20)
        print(bt.grid_info())
    

    在这里插入图片描述

    ipady

    垂直方向内边距

    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid()
        print(bt.grid_info())
    
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid(ipady=20)
        print(bt.grid_info())
    

    在这里插入图片描述

    padx

    水平方向外边距

    i = 1
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        if i%2 == 0:
            bt.grid(padx=20, column=1)
        else:
            bt.grid(padx=20)
        i += 1
        print(bt.grid_info())
    

    在这里插入图片描述

    pady

    垂直方向外边距

    i = 1
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        if i%2 == 0:
            bt.grid(pady=20, column=1)
        else:
            bt.grid(pady=20)
        i += 1
        print(bt.grid_info())
    

    在这里插入图片描述

    sticky

    sticky类似于pack的anchor,决定控件在cell中锚点,也就是控件在cell中的起始位置,可设置的值为’n’, ‘ne’, ‘e’, ‘se’, ‘s’, ‘sw’, ‘w’, ‘nw’; ‘e’、‘w’、‘s’、'n’分别表示东西南北。

    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid()
        print(bt.grid_info())
    
    for k,v in fruit.items():
        bt = Button(main_win, text=k, fg='black', bg=v)
        bt.grid(sticky='nw')
        print(bt.grid_info())
    

    在第二组按钮中,将sticky设置为’nw’,也就是以cell的左上方为起始显示。
    在这里插入图片描述

    好了,grid的属性就介绍到这里。是不是非常简单呢!

    展开全文
  • #grid 方法是一种以格状或者类似Excel电子表格方式包装和定位窗口组件的方法。grid语法如下: # grid(options,...) #options 可以是 row,column,padx,pady, rowspan,columnspan,sticky #1. row 和 column 可以...
    # -*- coding:utf-8 -*-
    
    #grid 方法是一种以格状或者类似Excel电子表格方式包装和定位窗口组件的方法。grid语法如下:
    
    #    grid(options,...)
    
    #options 可以是 row,column,padx,pady, rowspan,columnspan,sticky
    
    #1.  row 和 column  可以适度调整 grid()方法内地 row和column值,即可包装窗口组件的位置
    
    from tkinter import *
    window=Tk()
    
    window.title("My pleasure")
    lab1=Label(window,text="明志科技大学",bg="lightyellow",width=15)
    lab2=Label(window,text="长庚大学",bg="lightgreen",width=15)
    lab3=Label(window,text="长庚科技大学",bg="lightblue",width=15)
    lab1.grid(row=0,column=0)
    lab2.grid(row=0,column=1)
    lab3.grid(row=2,column=1)
    
    # columnspan rowspan参数  合并列和行
    
    
    #sticky 参数 类似anchor ,但是只是设定NSWE
    
    window.mainloop()
    # -*- coding:utf-8 -*-
    
    #sticky是可以组合的
    # N+S+W+E 可以拉长高度让控件在顶端和底端对齐,同时切齐左右边
    
    from tkinter import *
    
    """
    window=Tk()
    window.title("Helloworld")
    lab1=Label(window,text="明志工专")
    lab2=Label(window,bg="yellow",width=20)
    lab3=Label(window,text="明志科技大学")
    lab4=Label(window,bg="aqua",width=20)
    
    lab1.grid(row=0,column=0,padx=5,pady=5,sticky=W)
    lab2.grid(row=0,column=1,padx=5,pady=5)
    lab3.grid(row=1,column=0,padx=5)
    lab4.grid(row=1,column=1,padx=5)
    
    window.mainloop()
    
    """
    
    root=Tk()
    
    root.title("HelloKitty")
    Colors=["red","orange","yellow","green","blue","purple"]
    
    r=0
    
    #rowconfigure columnconfigure  在设计Widget控件的布局时,有时候会碰上窗口缩放大小,此时可以使用这两个方法设定第几个ROW或Column的缩放比例
    
    for color in Colors:
        root.rowconfigure(1, weight=1)
        root.columnconfigure(1, weight=1)
        Label(root,text=color,relief="groove",width=20).grid(row=r,column=0)
        Label(root,bg=color,relief="ridge",width=20).grid(row=r,column=1)
        r+=1
    root.mainloop()

     

     

    展开全文
  • Tkintergrid所有属性详解

    千次阅读 2019-12-04 15:19:14
    我理解的grid方法就是需要将容器如何放置在你的窗口上面,主要是将窗口划分为一些行列的网格,理解方式可以按照excel中的行列理解,少许不同的就是row和column的数值在grid中是相对的大小,而不是excel中绝对位置的...

    Tkinter的grid()方法记录
    我理解的grid方法就是需要将容器如何放置在你的窗口上面,主要是将窗口划分为一些行列的网格,理解方式可以按照excel中的行列理解,少许不同的就是row和column的数值在grid中是相对的大小,而不是excel中绝对位置的概念。grid最重要的是按照行列划分后放在指定的位置,和代码顺序无关。
    首先pack()方法的属性有如下几个:
    -row, -column, rowspan, columnspan, -ipadx, -ipady, -padx, -pady, -sticky
    其中grid方法可以应用于Tkinter内的所有容器;
     
     
     

    row,column

    row参数表示的是容器将要放置在窗口划分好的第几行,(从0开始)
    column参数表示的是容器将要放置在窗口划分好的第几列,(从0开始)
    行列是相对值得概念;
    同一个行列单元,重复放置会重叠显示,后放置的覆盖先放置;

    #"作者:晒晒小木桩"
    import tkinter as tk
    
    window = tk.Tk()
    #window.geometry("300x300")
    tk.Button(window,text="第0行第0列").grid(row=0,column=0)
    tk.Button(window,text="第0行第1列").grid(row=0,column=1)
    tk.Button(window,text="第0行第2列").grid(row=0,column=5)    #此处虽然将column设置为5,但是还是会放在column=2的地方
    tk.Button(window,text="第1行第0列").grid(row=1,column=0)
    tk.Button(window,text="第1行第1列").grid(row=1,column=1)
    tk.Button(window,text="覆盖").grid(row=1,column=1)   #将2个不同的容器放置在同一个位置上式叠加显示的
    window.mainloop()
    

    结果
    在这里插入图片描述

    rowspan, columnspan

    这2个参数配合row和column使用,表示将对应行列单元格的row或者column合并为一个使用。

    #"作者:晒晒小木桩"
    import tkinter as tk
    
    window = tk.Tk()
    window.geometry("300x300")
    tk.Button(window,text="第一个",bg="green").grid(row=0,column=0,rowspan=2,columnspan=2)
    tk.Button(window,text="第二个",bg="red").grid(row=0,column=2,columnspan=2)
    tk.Button(window,text="第1行第2列").grid(row=1,column=2)
    tk.Button(window,text="第1行第3列").grid(row=1,column=3)
    tk.Button(window,text="第2行第0列").grid(row=2,column=0)
    tk.Button(window,text="第2行第1列").grid(row=2,column=1)
    tk.Button(window,text="第2行第2列").grid(row=2,column=2)
    tk.Button(window,text="第2行第3列").grid(row=2,column=3)
    window.mainloop()
    

    结果如下:
    在这里插入图片描述excel中就是这样的,可以按这个对应来理解。
    在这里插入图片描述 
     
     

    sticky

    表示tkinter属性放置时在对应row,column内的对齐方式;
    sticky属性的参数有n,s,e,w,ne,nw,se,sw可选,默认居中

    #"作者:晒晒小木桩"
    import tkinter as tk
    
    window = tk.Tk()
    #window.geometry("300x300")
    tk.Button(window,text="第一个",bg="green").grid(row=0,column=0,rowspan=2,columnspan=2,sticky="se")
    tk.Button(window,text="第二个",bg="red").grid(row=0,column=2,columnspan=2,sticky="e")
    tk.Button(window,text="第1行第2列").grid(row=1,column=2)
    tk.Button(window,text="第1行第3列").grid(row=1,column=3)
    tk.Button(window,text="第2行第0列").grid(row=2,column=0)
    tk.Button(window,text="第2行第1列").grid(row=2,column=1)
    tk.Button(window,text="第2行第2列").grid(row=2,column=2)
    tk.Button(window,text="第2行第3列").grid(row=2,column=3)
    window.mainloop()
    

     
    结果如下:
    在这里插入图片描述
     
     
     
     

    *ipadx, ipady, padx, pady可以参考另一篇的pack中的介绍

    展开全文
  • TKintergrid()

    2020-01-29 13:34:56
    PythonGUI TKinter(一) 组件摆放-------->grid() grid相当于把页面分割成一个二维数组,row和column为数组的编号 row 设置行数 默认为0 column 设置列数 默认为0 # 1.导入tkinter库 import tkinter # 2.创建主...
  • Tkinter-Grid的用法

    千次阅读 2018-07-22 21:23:40
    ''Tkinter教程之Grid篇'''# Tkinter参考最推荐使用的一个布局器。实现机制是将Widget逻辑上分割成表格,在指定的位置放置想要的Widget就可以了。'''1.第一个Grid例子'''# -*- coding: cp936 -*-# 使用grid来...
  • python tkinter中grid布局是什么?

    千次阅读 2021-01-29 03:58:58
    之前跟大家讲过登录界面是...以及给大家介绍下用到的代码功能,一起来看下吧~grid布局管理器的工作方式就是设想将父窗口空间划分为网格,并在网格布置控件。例如如下的小窗口就可以看做一个三行两列的网格。这个画...
  • Tkinter布局之grid、place、pack梳理 grid(**options) 选项 含义 column --指定组件插入的列(0表示第一列)--默认值是0 columnspan --指定用多少列(跨列)显示该组件 in_ --将该组件放到...
  • IDE Pycharm 5.0.3其实这个不应该写,我认为网上很多关于grid和listbox的操作,但是!大家都抄来抄去!完全没有get到重点啊!一个错误的答案能传和转好多博客,我真是很无语。不知道博主们转之前有没有自己实际测试...
  • 主控件被分割成一系列的行和列,表格...什么时候使用Grid管理器grid管理器是Tkinter里面最灵活的几何管理布局器。如果你不确定什么情况下从三种布局管理选择,你至少要保证自己会使用grid。当你设计对话框的时候,...
  • 在使用Tkinter模块编写图像界面时,经常用到pack()和grid()进行布局管理,pack()参数较少,使用方便,是最简单的布局,但是当控件数量较多时,可能需要使用grid()进行布局(不要在同一个窗口同时使用grid()和pack()...
  • 网格管理器是Tkinter中最灵活的几何管理器。如果您不想学习如何以及何时使用这三位管理者,则至少应确保学习这一点。考虑以下示例-使用包管理器创建此布局是可能的,但是它需要大量额外的框架小部件,并且需要做很多...
  • Tkinter grid() 方法

    2019-10-05 07:56:23
    Tkinter grid() 方法:这个的几何管理器组织在父部件的表状结构的部件。 这的几何管理器组织表状结构的小部件的父部件. 语法: widget.grid( grid_options ) 下面是可能的选项列表: column :列...
  • 今天小编就为大家分享一篇Python tkintergrid布局及Text动态显示方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python tkinter grid 布局

    2020-07-02 14:38:17
    grid设置位置, columnconfigure, rowconfigure设置大小 2. Lable 示例 #!/usr/bin/env python3 import sys import tkinter import tkinter.ttk def guiInit(): top = tkinter.Tk() # 窗口大小和位置 WxH+X+...
  • grid布局方法及参数 以前讲过pack()这种布局定位组件的方法,今天我们来讲另一种类似表格定位方法来布局的方法grid() 以前我们曾用pack()+frame布局定位组件,做出了登录窗体,今天我们用grid()做同样一个登录窗体...
  • python tkinter grid 网格

    2020-12-14 16:13:49
    from tkinter import *colors = ['red', 'green', 'orange', 'white', 'yellow', 'blue']r = 0for c in colors:Label(text=c, relief=RIDGE, width=25).grid(row=r, column=0)Entry(bg=c, relief=SUNKEN, width=5...
  • Tkinter grid不工作

    2020-12-08 18:22:34
    这应该行得通(在我的Ubuntu16上使用了Python2.7)它打开两个窗口,是想要的还是不想要的?在它在中间显示一个图像,下面显示您的文本。在它通过添加“”字符串来工作,就像...)import Tkinter as tkdef about_windo...
  • from Tkinter import *root = Tk()root.columnconfigure(0, weight=1)Text(root).grid(row=0, column=0)root.mainloop()效果就是Text不会随着窗体增大而自动增大,其实只要能够横向自动增大就可以了,但好像找不到...
  • subframe of root does not show To understand your grid better, I added another widget to you code: from tkinter import * import sys from tkinter.scrolledtext import ScrolledText #Setup GUI #Create ...
  • 需要固定的组件在初始化时设置好大小(width=xx,height=xx) 然后在grid时使用grid_propagate(0)禁止扩张即可
  • tkinter 列表布局管理 Grid 在学习其他控件之前,我们需要先了解 ...在 grid 布局的所有控件都会被赋予一个行号和一个列号,这是每个控件相对于其他控件位置的凭证。 同一列控件上下排布,同一行控件左右排布。 行与
  • '''Tkinter教程之Grid篇''' #Tkinter參考最推薦使用的一個布局器。實現機制是將Widget邏輯上分割成表格,在指定的位置放置想要的Widget就可以了。 '''1.第一個Grid例子''' #-*-coding:cp936-*-# 使用grid來布局組...
  • tkintergrid布局合并单元格 rowspan 合并多行,比如:Label(root,text="table",width=10,height=2,),grid(row=0,column=0,rowspan=2) 这句话的意思是从第0行第0列开始,合并两行,最后就是第0行和第1行合并在...
  • tkinter 窗体grid布局最大化并填充

    万次阅读 多人点赞 2018-07-08 22:44:51
    grid布局作为tkinter最常用最灵活的布局方式,可以方便的在子控件嵌套新的grid布局,从而创建复杂的窗体结构。使用方法如下:frm=Frame(root,widht=800,width=480);lab=Label(frm,text='test');lab.grid(row=0...
  • Grid布局需要配合使用控件的width/height , row/column, sticky这三个属性才能处理好。 width/height:修改控件大小,不配置的话是使用控件默认的大小。有些很奇葩的情况,比如ListBox默认很窄,而ScrolledText默认...
  • Tkinter Grid 布局,均匀各占窗口一半,跟随窗口大小自动缩放。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,496
精华内容 3,798
关键字:

tkinter中grid