Skip to content

Commit 356f74e

Browse files
committed
with graphics
1 parent 2a5a342 commit 356f74e

File tree

8 files changed

+1773
-56
lines changed

8 files changed

+1773
-56
lines changed

components/fiveThread.py

+243-43
Large diffs are not rendered by default.

components/samuraiSudoku.py

+69-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from PyQt5.QtWidgets import QMainWindow, QApplication
44
from PyQt5.QtCore import QUrl, QThread, pyqtSignal
55
from PyQt5.QtWidgets import QApplication, QFileDialog
6-
6+
import pyqtgraph as pg
77
import numpy as np
88
from time import sleep
99

@@ -21,6 +21,7 @@ def __init__(self):
2121
self.loadButton.clicked.connect(self.chooseFile)
2222
self.clearButton.clicked.connect(self.clear)
2323
self.solveButton.clicked.connect(self.solveSudoku)
24+
self.compareButton.clicked.connect(self.compareSudoku)
2425

2526
def chooseFile(self):
2627
self.filePath, self.filetype = QFileDialog.getOpenFileName(
@@ -87,6 +88,15 @@ def setInfo(self, msg):
8788
"main: {}\n".format(msg))
8889
self.logScreen.ensureCursorVisible()
8990

91+
def compareSudoku(self):
92+
con = False
93+
with open('fiveThreadLog.txt', 'r') as file:
94+
con = True if file.readline() else False
95+
with open('tenThreadLog.txt', 'r') as file:
96+
con = True if file.readline() else False
97+
if con:
98+
graphObject = CompareSudokuGraph(self)
99+
90100
def startLoad(self):
91101
if self.threadRadioButton5.isChecked():
92102
self.fiveThreadObject = FiveThreadOptions(self)
@@ -121,7 +131,7 @@ def solveSudoku(self):
121131
if self.threadCount == 5:
122132
self.fiveThreadObject.solveSudoku()
123133
elif self.threadCount == 10:
124-
pass
134+
self.tenThreadObject.solveSudoku()
125135
else:
126136
self.setInfo("Unknow Error!")
127137

@@ -131,6 +141,63 @@ def setClickables(self, status):
131141
self.clearButton.setEnabled(status)
132142
self.threadRadioButton5.setEnabled(status)
133143
self.threadRadioButton10.setEnabled(status)
144+
self.compareButton.setEnabled(status)
145+
146+
147+
class CompareSudokuGraph():
148+
def __init__(self, GUI):
149+
self.gui = GUI
150+
self.SEC_AXIS_RANGE = 7
151+
self.fiveTGraphSeconds = []
152+
self.tenTGraphSeconds = []
153+
self.fiveTGraphCount = []
154+
self.tenTGraphCount = []
155+
self.getDatafromTxt()
156+
self.createGraphics()
157+
158+
def getDatafromTxt(self):
159+
with open('fiveThreadLog.txt', 'r') as file:
160+
line = file.readline()
161+
if line[0] == 'g':
162+
self.fiveTGraphSeconds.append(line.split("_")[1])
163+
self.fiveTGraphCount.append(line.split("_")[2])
164+
with open('tenThreadLog.txt', 'r') as file:
165+
line = file.readline()
166+
if line[0] == 'g':
167+
self.tenTGraphSeconds.append(float(line.split("_")[1]))
168+
self.tenTGraphCount.append(float(line.split("_")[2]))
169+
170+
def createGraphics(self):
171+
self.createAxisLabels()
172+
self.createPlotWidgets()
173+
174+
def createAxisLabels(self):
175+
self.gui.sudokuGraph.setLabel(
176+
axis='left', text='Count')
177+
self.gui.sudokuGraph.setLabel(
178+
axis='bottom', text='Second')
179+
180+
def createPlotWidgets(self):
181+
self.pen = pg.mkPen('r', width=3)
182+
self.pen2 = pg.mkPen('b', width=3)
183+
self.sudokuGW = self.gui.sudokuGraph
184+
185+
# five thread
186+
self.secondFT = self.fiveTGraphSeconds
187+
self.cellCountFT = self.fiveTGraphCount
188+
self.dataLine = self.sudokuGW.plot(
189+
self.secondFT, self.cellCountFT, pen=self.pen)
190+
191+
# ten threads
192+
self.secondTT = self.tenTGraphSeconds
193+
self.cellCountTT = self.tenTGraphCount
194+
self.dataLine = self.sudokuGW.plot(
195+
self.secondTT, self.cellCountTT, pen=self.pen2)
196+
197+
if len(self.fiveTGraphSeconds) > len(self.tenTGraphSeconds):
198+
self.sudokuGW.setXRange(0, len(self.fiveTGraphSeconds))
199+
else:
200+
self.sudokuGW.setXRange(0, len(self.tenTGraphSeconds))
134201

135202

136203
class ClearCellWorker(QThread):

0 commit comments

Comments
 (0)