用布局管理器grid实现计算机界面
一个 GUI 应用程序必然有大量的组件,这些组件如何排布?这时候,就需要使用 tkinter
提供的布局管理器帮助我们组织、管理在父组件中子组件的布局方式。tkinter 提供了三种
管理器:pack、grid、place。
grid 布局管理器
grid 表格布局,采用表格结构组织组件。子组件的位置由行和列的单元格来确定,并且可以跨行和跨列,从而实现复杂的布局。
# -- coding: utf-8 --
from tkinter import *
from tkinter import messageboxclass Application(Frame):def __init__(self,master=None):super().__init__(master)self.master = masterself.pack()self.createWidget()def createWidget(self):# """通过grid布局实现计算器的界面"""btnText = (("MC","M+","M-","MR"),("C","±","/","X"),(7,8,9,"_"),(4,5,6,"+"),(1,2,3,"="),(0,"."))Entry(self).grid(row=0,column=0,columnspan=4,pady=10,padx=2)for rindex, r in enumerate(btnText):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 == ".":(Button(self, text=c, width=2) \.grid(row=rindex + 1, column=cindex+1, sticky=NSEW))elif c == 0:(Button(self, text=c, width=2) \.grid(row=rindex + 1, column=cindex, columnspan=2,sticky=NSEW))else:(Button(self,text=c,width=2)\.grid(row=rindex+1,column=cindex,sticky=NSEW))if __name__ == '__main__':root = Tk()root.geometry("200x260+200+300")app = Application(master=root)root.mainloop()