python怎么编写gui_教你如何快速用python写gui

#-*- coding: utf-8 -*-

from tkinter import *

importdatetimeimporttimefrom data_sort importMy_Sortimportrandomimportsysimportre#插入 希尔 起泡 快速 选择 堆排序

classApplication(Frame):def __init__(self,root):"""初始化,创建各类按钮和文本框"""

#创建存储数字的number list

self.number =[]#count用来记录要排序的数字有多少个

self.count = 10086self.my=My_Sort()

super(Application,self).__init__(root)

self.grid()

self.root=root

Label(self, text="\t\t").grid(row=0, column=0)

Label(self, text="请选择排序模式:",

font= 'STXingkai -25 bold', fg = "#30E6FF").grid(row=0, column=1)#创建单选框,让用户选择数据来源

self.choose =StringVar()

self.choose.set(None)

self.input_number= Radiobutton(self, text="1手动输入数字", variable=self.choose,

value="请在右边对话框里输入随机数,以空格隔开",

command=self.update_text,

justify="center",

font='STXingkai -20 bold', fg="#DF4FE7").grid(row=2, column=0, sticky=W)

self.rand_number= Radiobutton(self, text="2产生随机数", variable=self.choose,

value= "请点击下面的产生随机数按钮",

command=self.update_text,

justify= "center",

font= 'STXingkai -20 bold', fg="#DF4FE7").grid(row=3, column=0, sticky=W)#创建各个功能的按钮

self.srand_btn = Button(self, text = "产生随机数",

command=self.create_rand_number

).grid(row=4, column=0, sticky=E,

ipadx="4p", ipady="4p")

self.get_txt_btn= Button(self, text="读取文本框数字",

command=self.get_Text_number

).grid(row=4, column=1,

ipadx="4p", ipady="4p")

self.exit_btn= Button(self, text="退出程序", command=self.GuiExit,

foreground="red", font='STXingkai -15 bold',

).grid(row=4, column=2, ipadx="4p", ipady="4p")

self.insert_btn= Button(self, text="插入排序",

command=self.insert

).grid(row=5, column=0, ipadx="4p", ipady="4p")

self.shell_btn= Button(self, text="希尔排序",

command=self.shell

).grid(row=5, column=1, ipadx="4p", ipady="4p")

self.buddle_btn= Button(self, text="起泡排序",

command=self.buddle

).grid(row=5, column=2, ipadx="4p", ipady="4p")

self.quick_btn= Button(self, text="快速排序",

command=self.quick

).grid(row=6, column=0, ipadx="4p", ipady="4p")

self.select_btn= Button(self, text="选择排序",

command=self.select

).grid(row=6, column=1, ipadx="4p", ipady="4p")

self.heap_btn= Button(self, text="堆排序",

command=self.heap

).grid(row=6, column=2, ipadx="4p", ipady="4p")

self.view_gui= Button(self, text="查看GUI源代码",command =self.view_gui

).grid(row=7, column=0, ipadx="4p", ipady="4p")

self.view_sort= Button(self, text="查看排序类源代码",command =self.view_sort

).grid(row= 7, column=1, ipadx="4p", ipady="4p")

Label(self, text="\t").grid(row=1, column=2)

Label(self, text="输入输出框:", font='STXingkai -16', fg="#F9A728").grid(row=1, column=3)

Label(self,text="").grid(row=8,column=0)

self.txt= Label(self, text="", width=37, height=5,borderwidth=2,

foreground="black",background="#E0E0E0",

font='STXingkai -20', fg="#4169E1")

self.txt.grid(row=2, column=1, sticky=W)

self.efficiency= Label(self, text="",

width=35,height=10,borderwidth=2,

font='STXingkai -20', fg="gray",

background="#C6E2FF")

self.efficiency.grid(row=9, column=1, rowspan=1)#创建输入输出文本框

self.output_txt = Text(self, width=60, height=15, wrap=WORD,

font='STXingkai -20', border=5, fg="gray")

self.output_txt.grid(row=2, column=4, rowspan=5)#创建输出文本框的滚动条

self.scrollbar =Scrollbar(self)

self.output_txt.configure(yscrollcommand=self.scrollbar.set)

self.scrollbar['command'] =self.output_txt.yview

self.scrollbar.set(0.5, 1)

self.scrollbar.grid(row=3, column=5)

self.scrollbar.grid_anchor(E)#产生随机数

defcreate_rand_number(self):if self.choose.get() == "请点击下面的产生随机数按钮":for i inrange(self.count):

r= random.randint(-10000,10000)

self.number.append(r)

self.txt['text'] = "随机数已经成功产生"

elif self.choose.get() == "请在右边对话框里输入随机数,以空格隔开":

self.txt['text'] = "请在右边对话框里输入随机数,以空格隔开"

else:

self.txt['text'] = "请选择模式后再进行下一步操作"

#退出程序

defGuiExit(self):

self.quit()defupdate_text(self):"""更新单选框的值以及文本内容"""message= ""message+=self.choose.get()

self.txt['text'] =messageif self.choose.get() == "请在右边对话框里输入随机数,以空格隔开":

self.get_Text_number()#获取输入输出文本框中的数字

defget_Text_number(self):try:

string= self.output_txt.get(0.0,END)

list= re.split(' ',string)

flag=0for i inlist :

num=int(i)

self.number.append(num)

flag+= 1self.count=flag

self.txt['text'] = "已经成功读完文本框里的数字"

except:pass

#进行排序

#插入排序

definsert(self):if len(self.choose.get()) > 10:

start=datetime.datetime.now()

self.number=self.my.insert_sort(self.number)

end=datetime.datetime.now()

self.get_effiency_writefile(start,end,name="插入排序",text="insert")

self.write_number_output()else:

self.txt['text'] = "请先选择排序模式"

#调用希尔排序

defshell(self):if len(self.choose.get()) > 10:

start=datetime.datetime.now()

self.number=self.my.shell_sort(self.number)

end=datetime.datetime.now()

self.get_effiency_writefile(start, end, name="希尔排序", text="shell")

self.write_number_output()else:

self.txt['text'] = "请先选择排序模式"

#调用起泡排序

defbuddle(self):if len(self.choose.get()) > 10:

start=datetime.datetime.now()

self.number=self.my.buddle_sort(self.number)

end=datetime.datetime.now()

self.get_effiency_writefile(start, end, name="起泡排序", text="buddle")

self.write_number_output()else:

self.txt['text'] = "请先选择排序模式"

#调用快速排序

defquick(self):if len(self.choose.get()) > 10:

start=datetime.datetime.now()

self.number= self.my.quick_sort(self.number,0,self.count-1)

end=datetime.datetime.now()

self.get_effiency_writefile(start, end, name="快速排序", text="quick")

self.write_number_output()else:

self.txt['text'] = "请先选择排序模式"

#调用选择排序

defselect(self):if len(self.choose.get()) > 10:

start=datetime.datetime.now()

self.number=self.my.select_sort(self.number)

end=datetime.datetime.now()

self.get_effiency_writefile(start, end, name="选择排序", text="select")

self.write_number_output()else:

self.txt['text'] = "请先选择排序模式"

#调用堆排序

defheap(self):if len(self.choose.get()) > 10:

start=datetime.datetime.now()

self.number=self.my.heap_sort(self.number)

end=datetime.datetime.now()

self.get_effiency_writefile(start, end, name="选择排序", text="heap")

self.write_number_output()else:

self.txt['text'] = "请先选择排序模式"

#把排序完成的数字写入输入输出文本框里面

defwrite_number_output(self):

temp= ""

for i inself.number:

temp+=str(i)

temp+= " "self.output_txt.delete(0.0,END)

self.output_txt.insert(0.0,temp)#查看界面类源代码

defview_gui(self):try:

f= open("Text_File\\gui.txt",'r+')

txt=f.read()

self.output_txt.delete(0.0,END)

self.output_txt.insert(0.0,txt)except:pass

#查看排序类源代码

defview_sort(self):try:

f= open("Text_File\\sort.txt",'r+')

txt=f.read()

self.output_txt.delete(0.0,END)

self.output_txt.insert(0.0,txt)except:pass

defget_effiency_writefile(self,start,end,name,text):

write= name + "开始时间:\n"write+=str(start)

write+= "\n"write+= "结束时间:\n"write+=str(end)

write+= "\n"write+= "用时:"write+= str(end-start)

write+="\n"self.efficiency['text'] =writetry:

f= open('Text_File\\%s_result.txt' %(text),'w')for i inself.number:

write+=str(i)

write+= " "f.write(write)

f.close()except:pass

if __name__ == '__main__':

root=Tk()

root.title("数据结构 — 排序")

root.geometry("400x400")

app=Application(root)

root.iconbitmap("hanhan.ico")

root.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值