Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PyQt5.QtWidgets import *
- from PyQt5.QtGui import *
- from PyQt5.QtCore import *
- import sys
- import time
- class main(QWidget):
- finieshed=pyqtSignal()
- Signal=pyqtSignal()
- def __init__(self):
- super(main,self).__init__()
- vb=QVBoxLayout()
- self.StartAndPauseBtn=QPushButton('Start')
- self.StopBtn=QPushButton('Stop')
- vb.addWidget(self.StartAndPauseBtn)
- vb.addWidget(self.StopBtn)
- self.setLayout(vb)
- self.worker=worker()
- self.mythread=QThread()
- self.worker.moveToThread(self.mythread)
- self.mythread.start()
- self.StartAndPauseBtn.clicked.connect(self.on_startBtn)
- self.StopBtn.clicked.connect(self.on_stopBtn)
- self.StopBtn.setDisabled(1) #stop button disabled change to 1 or True to be enable
- def on_startBtn(self):
- try:
- if self.StartAndPauseBtn.text()=="Start":
- self.Signal.connect(self.worker.start)
- self.Signal.emit()
- self.worker.signal.connect(self.worker.start)
- self.worker.Stop=False # look will work and not stopped
- self.worker.Pause=True # loop will work and not paused
- self.StartAndPauseBtn.setText('Pause')
- self.StopBtn.setDisabled(0) #stop buttn will be enable
- else:
- self.StartAndPauseBtn.setText('Start')
- self.worker.Paus_Thread()
- self.worker.Stop=False # it will make thee loop Pause
- except Exception as e:
- print(str(e))
- def on_stopBtn(self):
- self.worker.stop_thread() #loop will be stopped
- self.StartAndPauseBtn.setText('Start')
- print('Stopped')
- self.StopBtn.setDisabled(1) #stop button will be disable
- class worker(QObject):
- signal=pyqtSignal()
- def __init__(self):
- super(worker,self).__init__()
- self.Pause = True
- self.Stop=False
- def start(self):
- for i in range(15):
- if not self.Pause:
- print('paused')
- while not self.Pause : #if this be True it will sleep or pause the loop
- time.sleep(1)
- if not self.Stop: # if this be true it will stop the loop
- print(i)
- time.sleep(1)
- def Paus_Thread(self):
- self.Pause=False
- def stop_thread(self):
- self.Stop=True
- self.Pause=True
- if __name__=='__main__':
- app=QApplication(sys.argv)
- Main=main()
- Main.show()
- sys.exit(app.exec_())
Add Comment
Please, Sign In to add comment