美文网首页
GUI中grid布局管理

GUI中grid布局管理

作者: Chaweys | 来源:发表于2021-01-11 10:38 被阅读0次

布局管理器

grid表格布局,采用表格结构组织组件。子组件的位置由行和列的单元格来确定,并且可以跨行和跨列,从而实现复杂的布局。

grid()方法提供的选项:
column         单元格的列号                                                      从 0 开始的正整数
columnspan     跨列,跨越的列数                                                  正整数
row            单元格的行号                                                      从 0 开始的正整数 
rowspan        跨行,跨越的行数                                                  正整数  
ipadx, ipady   设置子组件之间的间隔(单元格之内组件的间隔),                      非负浮点数,默认 0.0
                x 方向或者 y 方向, 默认单位为像素          
                
padx, pady     与之并列的组件之间的间隔(单元格之间组件的间隔),                  非负浮点数,默认 0.0
                x 方向或者 y 方向,默认单位是像素
                
sticky         组件紧贴所在单元格的某一角,对应于东南西北中以及 4 个角           n, s, w, e, nw, sw, se, ne, center(默认)



#coding=utf-8
from tkinter import *
from tkinter import messagebox

class Application(Frame):
    def __init__(self,master):
        super().__init__(master)
        self.pack()
        self.createWidget()


    def createWidget(self):
        self.label01=Label(self,text="用户名")
        self.label01.grid(row=0,column=0)

        self.entry01=Entry(self)
        self.entry01.grid(row=0,column=1)

        self.label02=Label(self,text="用户名为手机号")
        self.label02.grid(row=0,column=2)

        self.label03=Label(self,text="密码")
        self.label03.grid(row=1,column=0)

        self.entry02=Entry(self,show="*")
        self.entry02.grid(row=1,column=1)

        self.button01=Button(self,text="登录",command=self.login)
        self.button01.grid(row=2,column=0)

        self.button02=Button(self,text="取消",command=self.exitout)
        self.button02.grid(row=2,column=2)

    def login(self):
        messagebox.showinfo("Message","登录成功")

    def exitout(self):
        exit(0)



if __name__=="__main__":
    root=Tk()
    root.title("grid布局管理")
    root.geometry("500x300+300+200")
    app=Application(root)
    root.mainloop()
grid布局管理器.png

grid布局实现计算器界面

#coding=utf-8
'''
根据实际简易计算器的按键分布,设计一个相仿的计算器界 面,相应的功能暂不需要实现
实际可以设计成一个 7 行 4 列的表格布局,然后将相应的按钮放置进去即可
'''

from tkinter import *

class Application(Frame):
    def __init__(self,master=None):
        super().__init__(master)
        self.pack()
        self.createWidget()

    def createWidget(self):
        items=(("MC","M-","M+","MR"),
               ("C","±","/","×"),
               (7,8,9,"-"),
               (6,5,4,"+"),
               (3,2,1,"="),
               (0,"."))

        #第一行为输入框,占满所有列,所以跨列columnspan=4
        Entry(self).grid(row=0,column=0,columnspan=4,pady=10)

        #enumerate(序列)可同时遍历该序列里的索引及元素,索引都是从0开始
        for rindex,r in enumerate(items):
            for cindex,c in enumerate(r):  #子元素也是一个元组,可再次遍历索引和元素
                if c=="=":                 #对"="要特殊处理,因为它跨行
                    Button(self, text=c,width=2).grid(row=rindex + 1, column=cindex,rowspan=2, sticky=NSEW)
                elif c==0:                 #对"0"要特殊处理,因为它跨列
                    Button(self, text=c,width=2).grid(row=rindex + 1, column=cindex, columnspan=2, sticky=NSEW)
                elif c==".":               #对"."呀特殊处理,因为前面的0跨列,所以也要相应往后移一位即列加1
                    Button(self, text=c,width=2).grid(row=rindex + 1, column=cindex+1, sticky=NSEW)
                else:
                    #外层索引加上1即为行(因为第一行已经被Entry()组件占用)
                    #内层索引即为每个元素的所在位置的列
                    Button(self,text=c,width=2).grid(row=rindex+1,column=cindex,sticky=NSEW)


if __name__=="__main__":
    root=Tk()
    root.title("grid布局实现计算器界面")
    root.geometry("500x300+300+300")
    app=Application(root)
    root.mainloop()
grid布局实现计算器页面.png

相关文章

网友评论

      本文标题:GUI中grid布局管理

      本文链接:https://www.haomeiwen.com/subject/hqukaktx.html