基于Tkinter的仿计算器界面设计(Grid布局)

一个GUI应用程序有很多的组件,将这些组件有序美观地排布在窗口上,需要用Tkinter提供的布局管理器,tkinter提供了三种管理其:pack,grid和place.
下面这个代码是用grid来进行的布局管理。
在看代码之前介绍几个重要的选项:
row :单元格的行号
column:单元格的列号。
columnspan:跨越的列数。
rowspan:跨越的行数。
ipadx,ipady设置组件之间x方向和y方向的间隔。单位为像素。
sticky:默认是center,组件紧贴着该单元格里的某一角或者对应于东南西北中某些角,如WE,代表紧贴单元格的东西两个方向,这样组件就会横向占满整个单元格,方向用大写字母ESWN这四个字母表示。
下面代码实现的功能就是仿计算器界面设计。
效果如图:
基于Tkinter的仿计算器界面设计(Grid布局)_第1张图片
代码如下:

# GUI经典写法:面向对象的写法
# Frame框架是一个容器,放其他组件的容器
# 下面是一个测试经典的GUI程序的写法,使用面向对象的方式
# Radiobutton是单选按钮组件
#   属性有:value = ' '设置该单选按钮对应的值
#          variable = self.v可以设置其对应的变量,可以设置对应变量的值来初始化单选按钮的选中状态
#          多个组件对应一个变量,则可以认定这几个组件是一组。
from tkinter import *
from tkinter import messagebox
import os
import webbrowser
import random


class Application(Frame):
	"""一个经典的GUI程序计算器设计"""

	def __init__(self,master=None):#构造器,构造一个组件对象
		super().__init__(master)   #super代表的是父类的定义,而不是父类对象。
		self.master = master
		self.pack()
		self.createWidget()

	def createWidget(self):
		btnText = (('MC','M+','M-','MR'),
					('C','±','➗','✖'),
					(7,8,9,'-'),
					(4,5,6,'+'),
					(1,2,3,'='),
					(0,'.'))
		self.ent = Entry(self)
		self.ent.grid(row = 0,column = 0,columnspan = 4,pady = 10)  #columnspan跨列
		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,sticky = NSEW,rowspan = 2) 
				elif c == 0:
					Button(self,text = c,width=2).grid(row = rindex+1,column = cindex,sticky = NSEW,columnspan = 2)
				elif c == '.':
					Button(self,text = c,width=2).grid(row = rindex+1,column = cindex+1,sticky = NSEW)
				else:
					Button(self,text = c,width=2).grid(row = rindex+1,column = cindex,sticky = NSEW)


if __name__ == '__main__':
	root = Tk()
	root.geometry("200x240+200+300")
	root.title("计算器界面设计")
	app = Application(master=root)
	root.mainloop()

你可能感兴趣的:(GUI编程初步)