Python timestamp to QDateTime and vice-versa
start_datetime.setSecsSinceEpoch(1234567890) start_datetime.toSecsSinceEpoch()
References
https://stackoverflow.com/questions/2935041/how-to-convert-from-timestamp-to-date-in-qt
start_datetime.setSecsSinceEpoch(1234567890) start_datetime.toSecsSinceEpoch()
References
https://stackoverflow.com/questions/2935041/how-to-convert-from-timestamp-to-date-in-qt
Python timestamp to datetime
from datetime import datetime timestamp = 1545730073 dt_object = datetime.fromtimestamp(timestamp) print("dt_object =", dt_object) print("type(dt_object) =", type(dt_object))
Python datetime to timestamp
from datetime import datetime # current date and time now = datetime.now() timestamp = datetime.timestamp(now) print("timestamp =", timestamp)
References
https://www.programiz.com/python-programming/datetime/timestamp-datetime
# from PySide import QtGui from PyQt4 import QtGui class CustomTextBrowser(QtGui.QTextBrowser): '''Reimplment show event to append text''' def showEvent(self, event): # do stuff here #self.append('This random text string ') event.accept()
import PyQt5.QtWidgets print(PyQt5.QtWidgets.QStyleFactory.keys()) ['Breeze', 'Oxygen', 'QtCurve', 'Windows', 'Fusion']
app = QApplication([]) app.setStyle('Windows')
References
https://pythonbasics.org/pyqt-style/
Check if a process is running
import psutil def checkIfProcessRunning(processName): ''' Check if there is any running process that contains the given name processName. ''' #Iterate over the all the running process for proc in psutil.process_iter(): try: # Check if process name contains the given name string. if processName.lower() in proc.name().lower(): return True except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): pass return False;
# Check if any chrome process was running or not. if checkIfProcessRunning('chrome'): print('Yes a chrome process was running') else: print('No chrome process was running')
Find PID (Process ID) of a running process by Name
import psutil def findProcessIdByName(processName): ''' Get a list of all the PIDs of a all the running process whose name contains the given string processName ''' listOfProcessObjects = [] #Iterate over the all the running process for proc in psutil.process_iter(): try: pinfo = proc.as_dict(attrs=['pid', 'name', 'create_time']) # Check if process name contains the given name string. if processName.lower() in pinfo['name'].lower() : listOfProcessObjects.append(pinfo) except (psutil.NoSuchProcess, psutil.AccessDenied , psutil.ZombieProcess) : pass return listOfProcessObjects;
# Find PIDs od all the running instances of process that contains 'chrome' in it's name listOfProcessIds = findProcessIdByName('chrome') if len(listOfProcessIds) > 0: print('Process Exists | PID and other details are') for elem in listOfProcessIds: processID = elem['pid'] processName = elem['name'] processCreationTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(elem['create_time'])) print((processID ,processName,processCreationTime )) else : print('No Running Process found with given text')
References
https://thispointer.com/python-check-if-a-process-is-running-by-name-and-find-its-process-id-pid/
invisible.vbs
CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, False
wscript.exe "C:\Wherever\invisible.vbs" "C:\Some Other Place\MyBatchFile.bat"
Example: Invisible.vbs "ME.exe"
References
https://superuser.com/questions/62525/run-a-batch-file-in-a-completely-hidden-way
Tap X,Y position:
adb shell input tap 500 1450
Swipe X1 Y1 X2 Y2 [duration(ms)]:
adb shell input swipe 100 500 100 1450 100
LongPress X Y:
adb shell input swipe 100 500 100 500 250
References
https://stackoverflow.com/questions/7789826/adb-shell-input-events
*args
# Python program to illustrate # *args for variable number of arguments def myFun(*argv): for arg in argv: print (arg) myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')
# Python program to illustrate # *args with first extra argument def myFun(arg1, *argv): print ("First argument :", arg1) for arg in argv: print("Next argument through *argv :", arg) myFun('Hello', 'Welcome', 'to', 'GeeksforGeeks')
**kwargs
# Python program to illustrate # *kargs for variable number of keyword arguments def myFun(**kwargs): for key, value in kwargs.items(): print ("%s == %s" %(key, value)) # Driver code myFun(first ='Geeks', mid ='for', last='Geeks')
# Python program to illustrate **kargs for # variable number of keyword arguments with # one extra argument. def myFun(arg1, **kwargs): for key, value in kwargs.items(): print ("%s == %s" %(key, value)) # Driver code myFun("Hi", first ='Geeks', mid ='for', last='Geeks')
References
https://www.geeksforgeeks.org/args-kwargs-python/
class Form(QMainWindow): finished = pyqtSignal() updateProgress = pyqtSignal(int) # use Slot in PySide2 def __init__(self, parent=None): super(Form, self).__init__(parent) ... self.updateProgress.connect(self.ui.progressBar.setValue) def run_test(self): for i in range(100): per = i + 1 self.updateProgress.emit(per) ...
References
https://stackoverflow.com/questions/42682544/pyqt5-listwidget-add-list-items
from PySide2.QtGui import * from PySide2.QtWidgets import * from PySide2.QtCore import * import time import traceback, sys class WorkerSignals(QObject): ''' Defines the signals available from a running worker thread. Supported signals are: finished No data error `tuple` (exctype, value, traceback.format_exc() ) result `object` data returned from processing, anything progress `int` indicating % progress ''' finished = Signal() error = Signal(tuple) result = Signal(object) progress = Signal(int) class Worker(QRunnable): ''' Worker thread Inherits from QRunnable to handler worker thread setup, signals and wrap-up. :param callback: The function callback to run on this worker thread. Supplied args and kwargs will be passed through to the runner. :type callback: function :param args: Arguments to pass to the callback function :param kwargs: Keywords to pass to the callback function ''' def __init__(self, fn, *args, **kwargs): super(Worker, self).__init__() # Store constructor arguments (re-used for processing) self.fn = fn self.args = args self.kwargs = kwargs self.signals = WorkerSignals() # Add the callback to our kwargs self.kwargs['progress_callback'] = self.signals.progress @Slot() def run(self): ''' Initialise the runner function with passed args, kwargs. ''' # Retrieve args/kwargs here; and fire processing using them try: result = self.fn(*self.args, **self.kwargs) except: traceback.print_exc() exctype, value = sys.exc_info()[:2] self.signals.error.emit((exctype, value, traceback.format_exc())) else: self.signals.result.emit(result) # Return the result of the processing finally: self.signals.finished.emit() # Done class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.counter = 0 layout = QVBoxLayout() self.l = QLabel("Start") b = QPushButton("DANGER!") b.pressed.connect(self.oh_no) layout.addWidget(self.l) layout.addWidget(b) w = QWidget() w.setLayout(layout) self.setCentralWidget(w) self.show() self.threadpool = QThreadPool() print("Multithreading with maximum %d threads" % self.threadpool.maxThreadCount()) self.timer = QTimer() self.timer.setInterval(1000) self.timer.timeout.connect(self.recurring_timer) self.timer.start() def progress_fn(self, n): print("%d%% done" % n) def execute_this_fn(self, progress_callback): for n in range(0, 5): time.sleep(1) progress_callback.emit(n*100/4) return "Done." def print_output(self, s): print(s) def thread_complete(self): print("THREAD COMPLETE!") def oh_no(self): # Pass the function to execute worker = Worker(self.execute_this_fn) # Any other args, kwargs are passed to the run function worker.signals.result.connect(self.print_output) worker.signals.finished.connect(self.thread_complete) worker.signals.progress.connect(self.progress_fn) # Execute self.threadpool.start(worker) def recurring_timer(self): self.counter +=1 self.l.setText("Counter: %d" % self.counter) app = QApplication([]) window = MainWindow() app.exec_()
References
https://www.learnpyqt.com/courses/concurrent-execution/multithreading-pyqt-applications-qthreadpool/