#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"): pass

else:#下面就是在文本中输入的内容

f=open("注意事项.txt",'x+') f.write("本exe文件有以下基本功能:\n" f.write("1.求可逆矩阵,注意事项:\n") f.write("1.求可逆矩阵,注意事项:\n") f.write("求可逆矩阵只需要输入一个矩阵就好,输入示例\n") f.write("[1 2 3\n") f.write("1 2 3\n") f.write("1 2 3]\n") f.write("注意中括号必须使用英文字符[ ],不能使用中文字符【 】相邻的两个数用一个空格隔开\n") f.write("2.求矩阵的点积,需要输入两个矩阵,矩阵的输入方法和上述一样中间用大写的的“X”隔开,输入示例:\n") f.write("[1 2 3\n") f.write("1 2 3\n") f.write("1 2 3]\n") f.write("X\n") f.write("[1 2 3\n") f.write("1 2 3\n") f.write("1 2 3]\n") f.write("3.求多元一次式的解,在这个过程中只需要未知数的系数即可(要带符号)等号和加减号不需要写,输出示例:\n") f.write("如果想求X+Y=0,3X+2Y=9就这样输入\n") f.write("1 1 0\n") f.write("3 2 9\n") 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 t2

t2.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 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,inv(A))

t2.insert(0.0,"输入有误")def Polynomial():

global t1

global t2

t2.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 t1

global t2

t2.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矩阵计算器_【python实用编程之简单矩阵计算器实现】GUI编程相关推荐

  1. java 计算器_用Java编写一个简单的计算器

    1.使用记事本或eclipse等编程工具,建立一个图形界面应用程序. 2.程序完成简单的四则计算功能 3.用户可以在名为Number1和Number2的文本输入框中输入2个操作数,然后点击下面的4个按 ...

  2. 用java编写计算器_用Java编写一个简单的计算器

    1.使用记事本或eclipse等编程工具,建立一个图形界面应用程序. 2.程序完成简单的四则计算功能 3.用户可以在名为Number1和Number2的文本输入框中输入2个操作数,然后点击下面的4个按 ...

  3. C语言 编程实现简单的计算器功能

    编程实现简单的计算器功能,要求用户按如下格式从键盘输入算式: 操作数1 运算符op 操作数2 计算并输出表达式的值,其中算术运算符包括:加(+).减(-).乘().除(/).^(次幂). 要求使其能进 ...

  4. 编程实现简单的计算器功能(swich)

    编程实现简单的计算器功能,要求用户按如下格式从键盘输入算式:   操作数1 运算符op 操作数2   计算并输出表达式的值,其中运算符为:加( + ).减( - ),乘( * ).除( / )   用 ...

  5. pb实现简单计算器的思想_【python实用编程之简单矩阵计算器实现】GUI编程

    以下代码是作者闲暇时所作,对GUI界面编程有想法的朋友欢迎与作者交流 以下是一个简单的矩阵计算器实现的代码: #coding=gbk from tkinter import Tk,Menu,messa ...

  6. python求矩阵的秩_【案例】求出矩阵的最简型?——sympy登场

    案例介绍 学过线性代数的同学都知道,在将矩阵进行初等变换化为最简型时过程有多么繁琐.今天,给大家带来一个小项目--使用 Python 化简矩阵. 将要学习:使用特殊的科学计算库--sympy,来化简矩 ...

  7. 编程python自学课程_就算你是文科生,也能轻松自学编程——《Python 自学手册》正式上线...

    说起来也有趣,谁能想到我身为一个文科生,最后却走上了 Coder 的道路. 中学时候,我对物理就抱有深深的恐惧,它一度让我在高二年级分班的时候毅然决然地选择了文科:高考后录取的学校也是文科院校,似乎跟 ...

  8. python就业视频_[Python] python就业班 900集 视频学习教

    01基础\* }+ F/ M- b6 v0 x) F( j% S 02Python核心编程\ 03数据结构与算法\5 C0 ~5 l2 x; S# k2 Z" a/ _" {) q ...

  9. python 病毒 基因_#Python#提取基因对应的蛋白质名

    提取基因对应的蛋白质官方名 最开始,是需要将基因跟其编码的蛋白质对应起来,找遍了各种数据库都没发现有相关的注释文件,Uniprot作为处理蛋白质的大佬,结果里都有,肯定有办法能够满足需求. 搜索TP5 ...

最新文章

  1. matlab中reshape和repmat函数的用法
  2. php多个参数伪静态,伪静态技术与页面多参数传送的处理办法
  3. python matplotlab.pyplot.scatter() 函数的用法
  4. (一)网络与信息安全概论入门阶段笔记
  5. 数据结构的简单理解(1)
  6. hibernate 乐观锁与悲观锁使用
  7. Antd Upload 和 Antd Form 结合的踩坑记录
  8. ASP.NET的七个内置对象
  9. 【CentOS】Centos下pip的安装
  10. storage 主机集群共享卷数据不同步_codis 高可用集群跳过nginx 代理
  11. 保护隐私型浏览器Tor发布安卓试用版
  12. win10喇叭没声音,Realtek高清音频管理器 打不开问题解决
  13. 算法导论学习笔记12_动态规划
  14. 《每日一题》NO.21:画出CMOS 非门/与非门/或非门的结构
  15. python虚拟宠物猫
  16. 解决xcel数据导入MySQL数据库【日期数据格式混乱】的问题
  17. 出海必读,汇量科技联合SensorTower发布《2022国内手游出海白皮书》
  18. SPSS Modeler 建模前准备—数据平衡与特征选择(指南 第十一章)
  19. 强化学习—— Target Network Double DQN(解决高估问题,overestimate)
  20. win10 uwp 获得元素绝对坐标

热门文章

  1. 根据父母身高预测女儿身高C语言代码
  2. HDU-1201,18岁生日
  3. php的CURL模块实现在线代理
  4. 散点生成曲线,并在曲线上批量取点的一种方法
  5. iOS 开发之调用相机
  6. html文字边框环绕,使用css的文本边框(围绕文本的边框)
  7. wifidog java_家用环境下部署wifidog认证服务器(java版)
  8. cct计算机一级百度云,CCT计算机等级考试一级(也就是计算机一级考试)
  9. C++ 裁剪图片 分割图片 截图
  10. 2018福建省c语言二级成绩查询,全国计算机二级成绩查询