以下代码是作者闲暇时所作,对GUI界面编程有想法的朋友欢迎与作者交流

以下是一个简单的矩阵计算器实现的代码:

#coding=gbk
from tkinter import  Tk,Menu,messagebox,Text,END
from re import match,findall
from numpy.linalg import inv,solve
from numpy import zeros,array,dot
from os.path import exists
def Show_Info():if exists("注意事项.txt"):passelse:#下面就是在文本中输入的内容f=open("注意事项.txt",'x+')f.write("本exe文件有以下基本功能:n" f.write("1.求可逆矩阵,注意事项:n")f.write("1.求可逆矩阵,注意事项:n")f.write("求可逆矩阵只需要输入一个矩阵就好,输入示例n")f.write("[1 2 3n")f.write("1 2 3n")f.write("1 2 3]n")f.write("注意中括号必须使用英文字符[ ],不能使用中文字符【 】相邻的两个数用一个空格隔开n")f.write("2.求矩阵的点积,需要输入两个矩阵,矩阵的输入方法和上述一样中间用大写的的“X”隔开,输入示例:n")f.write("[1 2 3n")f.write("1 2 3n")f.write("1 2 3]n")f.write("Xn")f.write("[1 2 3n")f.write("1 2 3n")f.write("1 2 3]n")f.write("3.求多元一次式的解,在这个过程中只需要未知数的系数即可(要带符号)等号和加减号不需要写,输出示例:n")f.write("如果想求X+Y=0,3X+2Y=9就这样输入n")f.write("1 1 0n")f.write("3 2 9n")f.write("相邻数字用一个空格隔开n")f.write("输出是这样的[9 -9]即X=9,Y=-9未知数与上面的未知数对齐n")f.write("4.求转置矩阵和求可逆矩阵输入相同n")f.write("5.求矩阵的和和求矩阵的点积相同知识将'X'变成'+'即可n")f.write("另外注意如果输出这样的[1. 2.]表示输出结果是[1.0 2.0]e是自然常数e后面的数是它的指数如果是负数则是负指数")messagebox.showinfo(title = "提示", message = "已在同目录下写下文档“注意事项.txt”请先在文档中查看")
def Martix_dot():global t1#声明变量global t2t2.delete(0.0, END)#删除文本框上一次的旧的不需要的内容L=t1.get(0.0,END)#得到文本框中的内容P2=[]#下面就是得到可以运算矩阵的过程P1=[]Content1=[]Content2=[]Q=L.split('X')P1,P2=Q[0],Q[1]P1=P1.split('n')P2=P2.split('n')for x in range(len(P1)):K1=findall('[0-9]{1,}',P1[x])if len(K1)>0:Content1.append(K1)A1=zeros((len(Content1),len(Content1[0])),int)for x in range(len(Content1)):for y in range(len(Content1[0])):A1[x][y]=Content1[x][y]for x in range(len(P2)):K2=findall('[0-9]{1,}',P2[x])#找到所有的数字形成一个列表if len(K2)>0:Content2.append(K2)A2=zeros((len(Content2),len(Content2[0])),int)for x in range(len(Content2)):for y in range(len(Content2[0])):A2[x][y]=Content2[x][y]try:t2.insert(0.0,dot(A1,A2))#在文本框中输入结果except:t2.insert(0.0,"输入有误")
def Invertible_matrix():global t1global t2t2.delete(0.0, END)L=t1.get(0.0,END)P=L.split('n')Conten=[]for x in range(len(P)):K=findall('[0-9]{1,}',P[x])if len(K)>0:Conten.append(K)A=zeros((len(Conten),len(Conten[0])),int)for x in range(len(Conten)):for y in range(len(Conten[0])):A[x][y]=Conten[x][y]try:t2.insert(0.0,inv(A))t2.insert(0.0,"输入有误")
def Polynomial():global t1global t2t2.delete(0.0, END)L=t1.get(0.0,END)P=L.split('n')Conten=[]for x in P:if len(x)>0:Conten.append(x.split())print(Conten)A=zeros((len(Conten),len(Conten[0])-1))for x in range(len(Conten)):for y in range(len(Conten[0])-1):A[x][y]=int(Conten[x][y])B=[]for x in range(len(Conten)):B.append(int(Conten[x][len(Conten[0])-1]))t2.insert(0.0,solve(A,B))
def T():global t1#声明全局变量global t2#声明全局变量t2.delete(0.0, END)#删除文本框中的字符串L=t1.get(0.0,END)#得到文本框中的字符串P=L.split('n')Conten=[]for x in range(len(P)):K=findall('[0-9]{1,}',P[x])#找到所有的数字if len(K)>0:Conten.append(K)A=zeros((len(Conten),len(Conten[0])),int)for x in range(len(Conten)):for y in range(len(Conten[0])):A[x][y]=Conten[x][y]try:t2.insert(0.0,A.T)except:t2.insert(0.0,"输入有误")
def plus():global t1global t2t2.delete(0.0, END)L=t1.get(0.0,END)P1=[]P2=[]Content1=[]Content2=[]Q=L.split('+')P1,P2=Q[0],Q[1]P1=P1.split('n')P2=P2.split('n')for x in range(len(P1)):K1=findall('[0-9]{1,}',P1[x])if len(K1)>0:Content1.append(K1)A1=zeros((len(Content1),len(Content1[0])),int)for x in range(len(Content1)):for y in range(len(Content1[0])):A1[x][y]=Content1[x][y]for x in range(len(P2)):K2=findall('[0-9]{1,}',P2[x])if len(K2)>0:Content2.append(K2)A2=zeros((len(Content2),len(Content2[0])),int)for x in range(len(Content2)):for y in range(len(Content2[0])):A2[x][y]=Content2[x][y]try:t2.insert(0.0,A1+A2)except:t2.insert(0.0,"输入有误")
Mywindow=Tk()   #创建GUI窗口Mywindow.title("简单矩阵处理器")#GUI窗口的名字Mywindow.geometry("800x450+500+250")#GUI窗口的大小Mywindow.minsize(400,400)#GUI窗口的最小值t1=Text(Mywindow,width=180,height=11,font=('Calibri 12  italic'))#创建一个文本框t1.grid(row=0,column=0)#grid和pack()只能使用一个,都是文本框的"放置函数"t1.insert(0.0, "请先点击“帮助”查看矩阵简单处理器的使用方法,并且在输入完之后再点击输出结果,并从中选取计算方式")#在第一个文本框中插入字符串t2=Text(Mywindow,width=180,height=20,font=('Calibri 12  italic'))#创建第二个文本框t2.grid(row=20,column=0)t2.insert(0.0,"在此处输出结果")Menu_All=Menu(Mywindow)#创建总菜单MENU1=Menu(Menu_All,tearoff=0)#创建主菜单MENU1.add_command(label="求可逆矩阵",command=lambda : Invertible_matrix())#创建副菜单MENU1.add_command(label="求矩阵的点积",command=lambda : Martix_dot())#创建副菜单MENU1.add_command(label="求多元一项式的解",command=lambda : Polynomial())#创建副菜单MENU1.add_command(label="求转置矩阵",command=lambda:T())#创建副菜单MENU1.add_command(label="求两个矩阵的加法",command=lambda :plus())#创建副菜单Menu_All.add_cascade(label="输出结果",menu=MENU1,font=('Calibri 12 '))#创建副菜单MENU2=Menu(Menu_All,tearoff=0)#创建主菜单MENU2.add_command(label="输入注意事项",command=lambda : Show_Info())#创建副菜单Menu_All.add_cascade(label='帮助',menu=MENU2,font=('Calibri 12 '))#总菜单显示Mywindow.config(menu=Menu_All)#显示主菜单Mywindow.mainloop()#循环

本python文件有以下基本功能:

1.求可逆矩阵,注意事项:

求可逆矩阵只需要输入一个矩阵就好,输入示例

[1 2 3

1 2 3

1 2 3]

注意中括号必须使用英文字符[ ],不能使用中文字符【 】相邻的两个数用一个空格隔开

2.求矩阵的点积,需要输入两个矩阵,矩阵的输入方法和上述一样中间用大写的的“X”隔开,输入示例:

[1 2 3

1 2 3

1 2 3]

X

[1 2 3

1 2 3

1 2 3]

3.求多元一次式的解,在这个过程中只需要未知数的系数即可(要带符号)等号和加减号不需要写,输出示例:

如果想求X+Y=0,3X+2Y=9就这样输入

1 1 0

3 2 9

相邻数字用一个空格隔开

输出是这样的[9 -9]即X=9,Y=-9未知数与上面的未知数对齐

4.求转置矩阵和求可逆矩阵输入相同

5.求矩阵的和和求矩阵的点积相同知识将’X’变成’+'即可

另外注意如果输出这样的[1. 2.]表示输出结果是[1.0 2.0]e是自然常数e后面的数是它的指数如果是负数则是负指数。

对于以上代码有兴趣和有时间的伙计欢迎提问,作者一定及时回答

上述代码可以用pyinstaller打包成可以独立执行的exe文件方便以后使用,也可以让你的代码再其他电脑上跑起来

下面是一些输出结果的照片:

获得数据输入方法和注意事项

求矩阵的点积

求多元一项式的解

求可逆矩阵

求转置矩阵

END...

pb实现简单计算器的思想_【python实用编程之简单矩阵计算器实现】GUI编程相关推荐

  1. pb实现简单计算器的思想_人教版初中数学七年级下册 用计算器求算数平方根、用有理数估计算数平方根的大小公开课优质课课件教案视频...

    6.1 用计算器研究平方根和立方根 一.教学目标 1.会用计算器求平方根和立方根,培养学生的数感. 2.经历运用计算器探究数学规律的活动,发展学生的探究能力和合情推理的能力,并在概念的探索过程中,进一 ...

  2. python打折简单程序每满_[Python设计模式] 第2章 商场收银软件——策略模式

    题目 设计一个控制台程序, 模拟商场收银软件,根据客户购买商品的单价和数量,计算总价. 基础版本 price = float(input("输入商品单价:")) number = ...

  3. Python基础教程(十二):GUI编程、版本区别、IDE

    python GUI编程(Tkinter) python提供了多个图形开发界面的库,几个常用Python GUI库如下: Tkinter: Tkinter模块("Tk 接口")是P ...

  4. evaluate函数使用无效_[Python实战]使用栈实现简易计算器

    我们这次实现的命令行计算器,支持加减乘除.括号.浮点数.负数,以及查看历史和退出功能. 主要的思路:read - parse - print - loop. read 阶段是指读取用户在提示符(cal ...

  5. python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫

    掌握开发轻量级爬虫,这里的案例是不需要登录的静态网页抓取.涉及爬虫简介.简单爬虫架构.URL管理器.网页下载器(urllib2).网页解析器(BeautifulSoup) 一.爬虫简介以及爬虫的技术价 ...

  6. js装修计算器java代码_用js编写的简单的计算器代码程序

    最近编写的一个简单的计算器代码程序,先给大家展示一下 分享代码如下 #box{width: 295px; margin: 0 auto; text-align: justify; border: 1p ...

  7. java 做计算器 百度云_用Java做一个简单的计算器

    窗体 package Calc; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * * 计算器程序6261 ...

  8. 对数学语言、简单的数学思想与数学方法的一点简单的理解

    文章结构 1. 数学语言 1.1 ==数学语言的理解方法:互译== 1.2 数学语言的阅读方法 2. 常见数学思想 2.1 函数思想 2.2 方程思想(数学建模) 2.3 分类讨论思想 2.3.1 引 ...

  9. 用java实现一个简单远程监控软件_利用java实现一个简单的远程监控程序

    一般的远程监控软件都是用c或者c++等语言开发的,而使用java如何来实现相同的功能呢. 首先我们先介绍一下一个简单的远程监控程序的实现原理. 功能一,远程屏幕监视 (1) 必须要有监控端与被监控端, ...

最新文章

  1. debian apt-get 国内常用 镜像源
  2. JavaSE——类集(上)(Collection、List、Iterator、forEach)
  3. cubietruck 编译 linux,Cubietruck---1. ct的使用说明烧写及源码的编译
  4. oracle求数据关联度,关于数据挖掘关联规则的Oracle实现
  5. RestTemplate与Feign使用对比
  6. 【特征提取】基于matlab基音周期估计【含Matlab源码 551期】
  7. 详解 ManualResetEvent(转)
  8. vw、vh、vmin、vmax 的含义
  9. 如何把pdf转成图片jpg格式?俩个方法,1分钟搞定
  10. 解决百度网盘刷新不出来二维码
  11. 实战:内存分配与回收策略
  12. EasyRTMP Android安卓手机直播推流摄像头偏暗的问题解决
  13. 微服务-分布式事务seata
  14. 1.leetcode
  15. NFT 金融化:存在哪些机会?面临哪些挑战?
  16. 大数据平台的搭建教程及软件工具!
  17. 数据结构之:时间复杂度(T(n)=O(n))
  18. 《记忆力心理学》5个方法 让你过目不忘
  19. 罗切斯特计算机官网,罗切斯特大学计算机
  20. Python运维开发工程师养成记(条件语句)

热门文章

  1. table加载动态数据(亲测)
  2. 动易 dw css不对,动易2019后台管理编辑器后台无法插入任何东西..._网络编辑_帮考网...
  3. mysql 字段 浮点_MySQL浮点数据字段不接受每个浮点数?如何解决这个问题?
  4. 5分绩点转4分_U19男篮世界杯 | 郭昊文空砍23分4篮板5助攻 国青72-86负菲律宾
  5. 基础计算机构,基础计算与设计
  6. (二)预处理时间序列数据用于AI预测和异常检测
  7. 使用HTML5和JavaScript创建音乐播放列表
  8. 计算机基础ppt_为什么大学老师教编程上课都不敲代码?为何老师上课都是PPT讲解,实战呢?...
  9. oracle是否启用dataguard,启动和关闭data guard的步骤
  10. fpga驱动oled iic显示代码_【接口时序】6、IIC总线的原理与Verilog实现