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

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

# 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()

使用 Python tkinter 库可以很容易地实现一个计算器软件界面,并使用 grid 布局进行排列。下面是一个简单的示例代码: ```python import tkinter as tk class Calculator: def __init__(self, master): self.master = master master.title("Calculator") # 创建显示结果的文本框 self.display = tk.Entry(master, width=20, font=('Arial', 16), justify='right') self.display.grid(row=0, column=0, columnspan=4, padx=5, pady=5) # 创建数字和操作符按钮 button_list = [ '7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=', '+' ] row_index = 1 col_index = 0 for button_text in button_list: # 创建按钮并绑定事件处理函数 button = tk.Button(master, text=button_text, width=5, height=2, font=('Arial', 16), command=lambda text=button_text:self.button_click(text)) # 使用 grid 布局进行排列 button.grid(row=row_index, column=col_index, padx=5, pady=5) col_index += 1 if col_index > 3: col_index = 0 row_index += 1 # 处理按钮点击事件 def button_click(self, text): if text == '=': result = eval(self.display.get()) self.display.delete(0, tk.END) self.display.insert(0, str(result)) else: self.display.insert(tk.END, text) if __name__ == '__main__': root = tk.Tk() app = Calculator(root) root.mainloop() ``` 这个示例代码创建了一个名为 Calculator 的类,用于显示计算器界面和处理按钮点击事件。在 `__init__` 方法,首先创建了一个文本框用于显示计算结果,并使用 grid 布局将其排列在第一行。接下来,创建了数字和操作符按钮并使用 grid 布局进行排列。 在 `button_click` 方法,处理按钮点击事件。如果点击的是等于号,则使用 `eval` 函数计算表达式的结果并显示在文本框;否则直接将按钮上的文本插入到文本框。 最后,在主函数创建了一个 Tkinter 窗口,并将 Calculator 类作为其子组件添加到窗口。调用 `mainloop` 方法进入事件循环,等待用户交互。运行这个程序,就可以看到一个简单的计算器界面了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值