基于python集合的运算图形化界面

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

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值