from
PyQt5.QtWidgets
import
*
from
PyQt5
import
QtCore, QtGui
from
PyQt5.QtGui
import
*
from
PyQt5.QtCore
import
*
import
sys
class
Window(QMainWindow):
number
=
[
2
,
3
,
6
,
9
,
8
,
12
,
16
,
7
,
10
,
5
,
4
,
11
,
2
,
13
]
def
__init__(
self
):
super
().__init__()
self
.setWindowTitle("Linear search ")
self
.setGeometry(
100
,
100
,
600
,
400
)
self
.UiComponents()
self
.show()
def
UiComponents(
self
):
self
.start
=
False
self
.label_list
=
[]
self
.desired
=
11
self
.counter
=
0
c
=
0
for
i
in
self
.number:
label
=
QLabel(
str
(i),
self
)
label.setStyleSheet("border :
1px
solid black;
background : white;")
label.setAlignment(Qt.AlignTop)
label.setGeometry(
50
+
c
*
30
,
50
,
20
, i
*
10
+
10
)
self
.label_list.append(label)
c
=
c
+
1
self
.search_button
=
QPushButton("Start Search",
self
)
self
.search_button.setGeometry(
100
,
270
,
100
,
30
)
self
.search_button.clicked.connect(
self
.search_action)
pause_button
=
QPushButton("Pause",
self
)
pause_button.setGeometry(
100
,
320
,
100
,
30
)
pause_button.clicked.connect(
self
.pause_action)
self
.result
=
QLabel("To search : "
+
str
(
self
.desired),
self
)
self
.result.setGeometry(
350
,
280
,
200
,
40
)
self
.result.setStyleSheet("border :
3px
solid black;")
self
.result.setFont(QFont(
'Times'
,
10
))
self
.result.setAlignment(Qt.AlignCenter)
timer
=
QTimer(
self
)
timer.timeout.connect(
self
.showTime)
timer.start(
200
)
def
showTime(
self
):
if
self
.start:
if
self
.label_list[
self
.counter].text()
=
=
str
(
self
.desired):
self
.label_list[
self
.counter].setStyleSheet(
"border :
1px
solid black;
background : lightgreen;")
self
.result.setText("Found at index : "
+
str
(
self
.counter))
self
.start
=
False
self
.counter
=
0
else
:
self
.label_list[
self
.counter].setStyleSheet(
"border :
1px
solid black;
background : grey;")
self
.counter
+
=
1
if
self
.counter
=
=
len
(
self
.label_list):
self
.start
=
False
self
.result.setText("Not Found")
def
search_action(
self
):
self
.start
=
True
self
.result.setText("Started searching...")
def
pause_action(
self
):
self
.start
=
False
self
.result.setText("Paused")
App
=
QApplication(sys.argv)
window
=
Window()
sys.exit(App.
exec
())