Asas_Test_Macro
unknown
python
2 months ago
4.9 kB
5
Indexable
import sys
import time
import interception
from PyQt5 import QtCore, QtWidgets
from deneme_python import Ui_MainWindow
class MacroWorker(QtCore.QObject):
finished = QtCore.pyqtSignal()
def __init__(self, cycle_gap_ms=0):
super().__init__()
self.running = False
self.cycle_gap_s = max(0, cycle_gap_ms) / 1000.0
def tap_key(self, key, hold_ms=10, after_ms=0):
interception.press(key)
if hold_ms > 0:
time.sleep(hold_ms / 1000.0)
if after_ms > 0:
time.sleep(after_ms / 1000.0)
@QtCore.pyqtSlot()
def run(self):
self.running = True
while self.running:
# Arduino mantığı:
# dış blok 6 kez tekrar etsin
for _ in range(6):
if not self.running:
break
# 2,3,4,5,6 sıralı vuruş
for key in ["2", "3", "4", "5", "6"]:
if not self.running:
break
self.tap_key(key, hold_ms=10)
# r tuşu 56 kez
for _ in range(56):
if not self.running:
break
self.tap_key("r", hold_ms=10, after_ms=5)
# Bir tam blok bittikten sonra ekstra bekleme istenirse
if self.running and self.cycle_gap_s > 0:
time.sleep(self.cycle_gap_s)
self.finished.emit()
def stop(self):
self.running = False
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
interception.auto_capture_devices()
self.worker_thread = None
self.worker = None
self.setWindowTitle("Macro Panel")
self.ui.pushButton.setText("Başlat")
self.ui.pushButton_2.setText("Durdur")
self.ui.pushButton_2.setStyleSheet("""
QPushButton {
background-color: red;
color: white;
font-weight: bold;
}
QPushButton:hover {
background-color: darkred;
}
""")
# Input alanını koruyoruz
self.label_interval = QtWidgets.QLabel(self.ui.centralwidget)
self.label_interval.setGeometry(QtCore.QRect(45, 160, 150, 24))
self.label_interval.setText("Blok sonu süre (ms):")
self.input_interval = QtWidgets.QLineEdit(self.ui.centralwidget)
self.input_interval.setGeometry(QtCore.QRect(185, 160, 70, 24))
self.input_interval.setText("0")
self.ui.pushButton.show()
self.ui.pushButton_2.hide()
self.statusBar().showMessage("Hazır")
self.ui.pushButton.clicked.connect(self.start_macro)
self.ui.pushButton_2.clicked.connect(self.stop_macro)
def get_cycle_gap_ms(self):
text = self.input_interval.text().strip()
if not text:
return 0
try:
value = int(text)
return max(0, value)
except ValueError:
return 0
def start_macro(self):
if self.worker is not None:
return
cycle_gap_ms = self.get_cycle_gap_ms()
self.input_interval.setEnabled(False)
self.ui.pushButton.hide()
self.ui.pushButton_2.show()
self.statusBar().showMessage(
f"Makro çalışıyor | Blok sonu süre: {cycle_gap_ms} ms"
)
self.worker_thread = QtCore.QThread()
self.worker = MacroWorker(cycle_gap_ms=cycle_gap_ms)
self.worker.moveToThread(self.worker_thread)
self.worker_thread.started.connect(self.worker.run)
self.worker.finished.connect(self.worker_thread.quit)
self.worker.finished.connect(self.worker.deleteLater)
self.worker_thread.finished.connect(self.on_worker_finished)
self.worker_thread.finished.connect(self.worker_thread.deleteLater)
self.worker_thread.start()
def stop_macro(self):
if self.worker is not None:
self.worker.stop()
def on_worker_finished(self):
self.worker = None
self.worker_thread = None
self.input_interval.setEnabled(True)
self.ui.pushButton_2.hide()
self.ui.pushButton.show()
self.statusBar().showMessage("Makro durdu")
def closeEvent(self, event):
if self.worker is not None:
self.worker.stop()
if self.worker_thread is not None:
self.worker_thread.quit()
self.worker_thread.wait()
event.accept()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())Editor is loading...
Leave a Comment