# coding=utf-8 import sys from PyQt4.QtGui import * from PyQt4.QtCore import * class MainWindow(QMainWindow): def __init__(self,parent=None): super(MainWindow,self).__init__(parent) self.setWindowTitle(u'算法實現') self.setWindowIcon(QIcon('image/5.png')) #設置輸入數據窗口&數據輸出窗口 in_out_putDock=QDockWidget() in_out_putDock_workspace=QWorkspace() in_out_putDock.setWidget(in_out_putDock_workspace) label_in=QLabel(u'輸入數據窗口,數據以「,」分隔') label_out=QLabel(u'輸出數據窗口') self.inTextEdit=QTextEdit() self.outTextEdit=QTextEdit() layout=QGridLayout() layout.addWidget(label_in,0,0) layout.addWidget(self.inTextEdit,1,0,1,4) layout.addWidget(label_out,2,0) layout.addWidget(self.outTextEdit,3,0,1,4) in_out_putDock_workspace.setLayout(layout) self.addDockWidget(Qt.LeftDockWidgetArea,in_out_putDock) #設置算法(algorithm)按鈕及運行時間顯示控件 algori_Dock=QDockWidget() algori_Dock_workspace=QWorkspace() algori_Dock.setWidget(algori_Dock_workspace) self.clearButton=QPushButton(u'清除輸入輸出框內容') self.insert_sort_Button=QPushButton(u'插入排序算法') time_label=QLabel(u'算法運行時間: ') self.runTime_label=QLabel() self.runTime_label.setFrameShape(QFrame.Box) layout2=QGridLayout() layout2.addWidget(time_label,0,0) layout2.addWidget(self.runTime_label,0,1) layout2.addWidget(self.clearButton,1,0,1,1) layout2.addWidget(self.insert_sort_Button,2,0,1,2) layout2.setRowStretch(3,1) algori_Dock_workspace.setLayout(layout2) self.addDockWidget(Qt.RightDockWidgetArea,algori_Dock) #將按鈕與動做相連 self.connect(self.insert_sort_Button,SIGNAL('clicked()'),self.insertSortUp) self.connect(self.clearButton,SIGNAL('clicked()'),self.clearInOutEdit) #從輸入文本框中獲取文本並返回數字列表 def getData(self): textData=self.inTextEdit.document() textData_str=textData.toPlainText() data=str(textData_str).split(',') data_f=[] for i in range(len(data)): data_f.append(float(data[i])) return data def showResult(self,pname,runcount,time,data): tex=pname+u': ||運行時間爲:'+str(time)+u' 毫秒 ||運行所用循環執行次數爲:'+str(runcount)+u' 次||運行結果爲: '+str(data) self.outTextEdit.setText(tex) self.runTime_label.setText(str(time)+u'毫秒') def insertSortUp(self): run_time=QTime() run_time.start() data=self.getData() runcount=0 #插入排序算法 j=1 for j in range(len(data)): key=data[j] i=j-1 while i>=0 and data[i]>key: data[i+1]=data[i] i-=1 runcount+=1 data[i+1]=key spend_time=run_time.elapsed() self.showResult(u'插入排序算法',runcount,spend_time,data) def clearInOutEdit(self): self.outTextEdit.clear() self.inTextEdit.clear() app=QApplication(sys.argv) form=MainWindow() form.show() app.exec_()
待添加其餘排序算法算法