пользователь вводит данные в QLineEdit нажимает QpushButton нужно передать в поток QThread и в дальнейшем c этих данных в методе run сделать задержку
Программа для нажатия кнопки с задержкой которую ты хочешь не могу передать данные из QlineEdit там пользователь и пишет задержку. Новичек в pyqt5 раньше с таким не работал
from ui import Ui_MainWindow
from PyQt5 import QtCore, QtGui, QtWidgets
import pyautogui
import time
class WorkThread(QtCore.QThread, QtWidgets.QMainWindow):
threadSignal = QtCore.pyqtSignal(int)
def __init__(self):
super(WorkThread, self).__init__()
def run(self):
while True:
time.sleep(3) # зажержка из потока должна быть тут вместо 3
pyautogui.press('e')
class Button_WoW(QtWidgets.QMainWindow):
def __init__(self):
super(Button_WoW, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.thread = WorkThread()
self.ui.start_button.clicked.connect(self.func1)
self.times = self.ui.main_line_edit.text() # 1123
self.ui.stop_button.setDisabled(True)
self.ui.stop_button.clicked.connect(self.func2)
def func1(self):
self.ui.start_button.setDisabled(True)
self.ui.stop_button.setDisabled(False)
self.thread.start()
def func2(self):
self.thread.terminate()
self.ui.stop_button.setDisabled(True)
self.ui.start_button.setDisabled(False)
def on_fineshed(self):
self.ui.start_button.setDisabled(False)
self.ui.stop_button.setDisabled(True)
def count_sleep(self):
int(self.ui.main_line_edit.text())
def main():
app = QtWidgets.QApplication([])
application = Button_WoW()
application.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
.ui - файл
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("ButtonMacro")
MainWindow.resize(403, 436)
MainWindow.setStyleSheet("background-color: #121212;")
MainWindow.setFixedSize(403, 436)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.start_button = QtWidgets.QPushButton(self.centralwidget)
self.start_button.setGeometry(QtCore.QRect(70, 330, 271, 51))
font = QtGui.QFont()
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.start_button.setFont(font)
self.start_button.setStyleSheet("background-color: #00ff3b;\n"
"border-radius: 12px;\n"
"\n"
"start_button:!hover{\n"
" background: #50ff240;\n"
" border-color: #050505;\n"
"}")
self.start_button.setObjectName("start_button")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(-1, -11, 411, 90))
self.frame.setStyleSheet("background-color: #333;")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.main_label = QtWidgets.QLabel(self.frame)
self.main_label.setGeometry(QtCore.QRect(40, 20, 331, 61))
font = QtGui.QFont()
font.setPointSize(-1)
self.main_label.setFont(font)
self.main_label.setStyleSheet("color: #121212;\n"
"font-size: 45px;")
self.main_label.setObjectName("main_label")
self.b1za_label = QtWidgets.QLabel(self.frame)
self.b1za_label.setGeometry(QtCore.QRect(10, 10, 81, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.b1za_label.setFont(font)
self.b1za_label.setStyleSheet("color: #121212;")
self.b1za_label.setObjectName("b1za_label")
self.stop_button = QtWidgets.QPushButton(self.centralwidget)
self.stop_button.setGeometry(QtCore.QRect(70, 260, 271, 51))
font = QtGui.QFont()
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.stop_button.setFont(font)
self.stop_button.setStyleSheet("background-color: #e01e3e;\n"
"border-radius: 12px;\n"
"\n"
"stop_button:!hover{\n"
" background: #ff3030;\n"
" border-color: #050505;\n"
"}")
self.stop_button.setObjectName("stop_button")
self.main_line_edit = QtWidgets.QLineEdit(self.centralwidget)
self.main_line_edit.setGeometry(QtCore.QRect(70, 220, 271, 31))
self.main_line_edit.setStyleSheet("border: 2px solid #ffffff;\n"
"background-color: #121212;\n"
"border-radius: 12;\n"
"color: #ffffff;")
self.main_line_edit.setObjectName("main_line_edit")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(140, 90, 131, 121))
self.label_3.setText("")
self.label_3.setPixmap(QtGui.QPixmap("../239775.png"))
self.label_3.setObjectName("label_3")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("ButtonMacro", "ButtonMacro"))
self.start_button.setText(_translate("ButtonMacro", "START"))
self.main_label.setText(_translate("ButtonMacro", "<html><head/><body><p>Macro for WoW</p></body></html>"))
self.b1za_label.setText(_translate("ButtonMacro", "by.OneB1za"))
self.stop_button.setText(_translate("ButtonMacro", "STOP"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Я немного изменил ваш main.py, проверьте и спросите если вам что-то не понятно.
import sys
#import time
from PyQt5 import QtCore, QtGui, QtWidgets
import pyautogui
#from ui import Ui_MainWindow
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("ButtonMacro")
MainWindow.resize(403, 436)
MainWindow.setStyleSheet("background-color: #121212;")
MainWindow.setFixedSize(403, 436)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.start_button = QtWidgets.QPushButton(self.centralwidget)
self.start_button.setGeometry(QtCore.QRect(70, 330, 271, 51))
font = QtGui.QFont()
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.start_button.setFont(font)
self.start_button.setStyleSheet("background-color: #00ff3b;\n"
"border-radius: 12px;\n"
"\n"
"start_button:!hover{\n"
" background: #50ff240;\n"
" border-color: #050505;\n"
"}")
self.start_button.setObjectName("start_button")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(-1, -11, 411, 90))
self.frame.setStyleSheet("background-color: #333;")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.main_label = QtWidgets.QLabel(self.frame)
self.main_label.setGeometry(QtCore.QRect(40, 20, 331, 61))
font = QtGui.QFont()
font.setPointSize(-1)
self.main_label.setFont(font)
self.main_label.setStyleSheet("color: #121212;\n"
"font-size: 45px;")
self.main_label.setObjectName("main_label")
self.b1za_label = QtWidgets.QLabel(self.frame)
self.b1za_label.setGeometry(QtCore.QRect(10, 10, 81, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.b1za_label.setFont(font)
self.b1za_label.setStyleSheet("color: #121212;")
self.b1za_label.setObjectName("b1za_label")
self.stop_button = QtWidgets.QPushButton(self.centralwidget)
self.stop_button.setGeometry(QtCore.QRect(70, 260, 271, 51))
font = QtGui.QFont()
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
self.stop_button.setFont(font)
self.stop_button.setStyleSheet("background-color: #e01e3e;\n"
"border-radius: 12px;\n"
"\n"
"stop_button:!hover{\n"
" background: #ff3030;\n"
" border-color: #050505;\n"
"}")
self.stop_button.setObjectName("stop_button")
self.main_line_edit = QtWidgets.QLineEdit(self.centralwidget)
self.main_line_edit.setGeometry(QtCore.QRect(70, 220, 271, 31))
self.main_line_edit.setStyleSheet("border: 2px solid #ffffff;\n"
"background-color: #121212;\n"
"border-radius: 12;\n"
"color: #ffffff;")
self.main_line_edit.setObjectName("main_line_edit")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(140, 90, 131, 121))
self.label_3.setText("")
self.label_3.setPixmap(QtGui.QPixmap("Ok.png").scaled(131, 121))
self.label_3.setObjectName("label_3")
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("ButtonMacro", "ButtonMacro"))
self.start_button.setText(_translate("ButtonMacro", "START"))
self.main_label.setText(_translate("ButtonMacro", "<html><head/><body><p>Macro for WoW</p></body></html>"))
self.b1za_label.setText(_translate("ButtonMacro", "by.OneB1za"))
self.stop_button.setText(_translate("ButtonMacro", "STOP"))
class WorkThread(QtCore.QThread): # , QtWidgets.QMainWindow):
threadSignal = QtCore.pyqtSignal(int)
def __init__(self):
super(WorkThread, self).__init__()
self.my_sleep = 3000 # +++ 3000 мс = 3 сек
def run(self):
while True:
# time.sleep(3) # зажержка из потока должна быть тут вместо 3
self.msleep(self.my_sleep) # +++
pyautogui.press('e')
self.threadSignal.emit(self.my_sleep) # +++
class Button_WoW(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super(Button_WoW, self).__init__()
# self.ui = Ui_MainWindow()
self.setupUi(self)
self.start_button.clicked.connect(self.func_start)
self.times = self.main_line_edit.text() # 1123
self.stop_button.setDisabled(True)
self.stop_button.clicked.connect(self.func_stop)
self.label_3.setStyleSheet("""
border-radius: 12;
color: #F00;
font-size: 17px;
border-image: url(rio.jpg) 0 0 0 0 ;
""")
self.label_3.setAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom)
self.main_line_edit.textChanged.connect(self.text_changed)
self.thread = WorkThread()
self.thread.threadSignal.connect(self.thread_signal)
def text_changed(self, text):
if text.isdigit():
self.thread.my_sleep = int(text)
def thread_signal(self, my_sleep):
self.label_3.setText(f'Пауза: {my_sleep} мс')
def func_start(self):
self.start_button.setDisabled(True)
self.stop_button.setDisabled(False)
self.thread.start()
def func_stop(self):
self.label_3.setText(f'Процесс \nостановлен.')
self.thread.terminate()
self.stop_button.setDisabled(True)
self.start_button.setDisabled(False)
''' # ??? vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
def on_fineshed(self):
self.start_button.setDisabled(False)
self.stop_button.setDisabled(True)
def count_sleep(self):
int(self.main_line_edit.text())
''' # ??? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
def main():
app = QtWidgets.QApplication(sys.argv)
application = Button_WoW()
application.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
rio.jpg
Ok.png


