from tkinter import *
import time
I=0
class Mygui:
def __init__(self,windowname):
self.windowname=windowname
def set_window(self):
self.windowname.title("集合运算处理工具")
#设置窗口大小
width = 1150
height =800
#获取屏幕尺寸以计算布局参数,使窗口居屏幕中央
screenwidth =self.windowname.winfo_screenwidth()
screenheight = self.windowname.winfo_screenheight()
alignstr = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)
self.windowname.geometry(alignstr)
#设置窗口是否可变长、宽,True:可变,False:不可变
self.windowname.resizable(width=True, height=True)
self.windowname["bg"]="pink"#设置窗口背景色
#建立标签Label
self.label1=Label(self.windowname,text="集合A",bd=1,bg="LavenderBlush")
self.label1.grid(row=0,column=0)
self.label2=Label(self.windowname,text="集合B",bd=1,bg="LavenderBlush")
self.label2.grid(row=0,column=12)
self.labeldatabase=Label(self.windowname,text="运算结果",bd=1,bg="LavenderBlush")
self.labeldatabase.grid(row=6,column=0)
self.labeldatabase=Label(self.windowname,text="日志",bd=1,bg="LavenderBlush")
self.labeldatabase.grid(row=20,column=0)
#建立文本框
self.text1=Text(self.windowname,width=80,height=10,font=("楷体", 14),bd=2,insertbackground="Orange")#集合A的文本框
self.text1.grid(row=1,column=0,rowspan=5,columnspan=5)
self.text2=Text(self.windowname,width=80,height=10,font=("楷体", 14),bd=2,insertbackground="Orange")#集合B的文本框
self.text2.grid(row=1,column=12,rowspan=5,columnspan=5)
self.text3=Text(self.windowname,width=160,height=60,font=("楷体", 14),bd=2)#显示日志
self.text3.grid(row=40,column=0,rowspan=10,columnspan=20)
self.text4=Text(self.windowname,width=160,height=15,font=("楷体", 14),bd=2,spacing2=2,wrap=WORD)#显示运算结果
self.text4.grid(row=7,column=0,rowspan=10,columnspan=20)
#添加一个按钮
self.resultbutton=Button(self.windowname, text="Run",activeforeground="blue",bg="LavenderBlush",activebackground="PaleGreen",relief="raised", width=5,command=self.calculate)
self.resultbutton.grid(row=6, column=1)
#功能函数
def calculate(self):
keys=["A+B的并集:","A与B的交集:","A-B的差集:","B-A的差集:","A的补集:","B的补集:"]
a=self.text1.get(1.0,END)[0:-1]#提取集合A
a=a.lower()#转化小写
a=a.replace(" ","")#除去字符串a中的逗号或空格
a=a.replace(",","")
b=self.text2.get(1.0,END)[0:-1]#提取集合B
b=b.lower()#转化小写
b=b.replace(" ","")#除去字符串b中的逗号或空格
b=b.replace(",","")
if a.strip() and b.strip():
x=set(a)#将字符串转换为集合
y=set(b)#将字符串转换为集合
union=sorted(x|y)#x与y集合的并集
inter=x&y#x与y集合的交集
if inter==set():
inter="交集集合为空"
else:
inter=sorted(inter)
subt1=sorted(x-y)#x-y集合的差集
subt2=sorted(y-x)#y-x集合的差集
z="asdfghjklzxcvbnmqwertyuiop"
z=set(z)
comple1=sorted(z-x)#x集合的补集
comple2=sorted(z-y)#y集合的补集
values=[union,inter,subt1,subt2,comple1,comple2]
dictt=dict(zip(keys,values))
#输出到界面
self.text4.delete(1.0,END)
self.text4.insert(1.0,"A+B的并集:")
self.text4.insert(1.25,dictt.get("A+B的并集:"))
self.text4.insert(4.0,"\n")
self.text4.insert(10.0,"A与B的交集:")
self.text4.insert(12.25,dictt.get("A与B的交集:"))
self.text4.insert(15.0,"\n")
self.text4.insert(12.0,"A-B的差集:")
self.text4.insert(12.25,dictt.get("A-B的差集:"))
self.text4.insert(13.0,"\n")
self.text4.insert(15.0,"B-A的差集:")
self.text4.insert(18.25,dictt.get("B-A的差集:"))
self.text4.insert(20.0,"\n")
self.text4.insert(23.0,"A的补集:")
self.text4.insert(25.25,dictt.get("A的补集:"))
self.text4.insert(27.0,"\n")
self.text4.insert(30.0,"B的补集:")
self.text4.insert(33.25,dictt.get("B的补集:"))
self.writeText3("集合运算成功")
else:
self.writeText3("输入错误:集合A,B不能为空")
#获取当前时间
def gettime(self):
current_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
return current_time
#日志动态打印
def writeText3(self,data):
global I
current_time = self.gettime()
datatime = str(current_time) +":" + str(data) + "\n" #换行
if I <= 12:
self.text3.insert(END, datatime)
I = I + 1
else:
self.text3.delete(1.0,2.0)
self.text3.insert(END, datatime)
def main():
init_window=Tk()
wangheqi=Mygui(init_window)
wangheqi.set_window()
init_window.mainloop()
main()
基于python集合的运算图形化界面
于 2022-01-21 19:37:45 首次发布