|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
因实验需要延时点击,写了个简单的小助手 。
- from PySide2.QtWidgets import QApplication, QMessageBox, QTableWidget, QFileDialog, QTableWidgetItem, QColorDialog, \
- QProgressBar, QStatusBar
- from PySide2.QtUiTools import QUiLoader
- from PySide2.QtCore import QFile, QUrl
- from PySide2.QtGui import QIcon
- from PySide2.QtWebEngineWidgets import QWebEngineView
- import pyautogui as pa
- import pyperclip as pp
- import time
- from threading import Thread
- import os
- class MainWin:
- def __init__(self):
- qfile = QFile('main.ui')
- qfile.open(qfile.ReadOnly)
- qfile.close()
- self.ui = QUiLoader().load(qfile)
- self.ui.setWindowTitle('autodesk')
- for each in pa.KEYBOARD_KEYS:
- if each in ['\t', '\n', '\r']:
- self.ui.key_cbox.addItem(str(list(each)))
- else:
- self.ui.key_cbox.addItem(each)
- self.command_list = []
- self.command_content = []
- self.show_list = []
- self.text_expend = ''
- self.command = ['鼠标左键', '鼠标右键', '鼠标左键双击', '按键', '按键按下', '按键松开',
- '鼠标移动', '文本', '操作间隔时间', '操作移动时间', '鼠标左键拖拽', '鼠标左键拖拽']
- flag = 1
- # 读取保存的组合指令
- if 'command.txt' in os.listdir():
- with open('command.txt', 'r') as f:
- for eachline in f:
- if ':' in eachline and eachline[:-1].split(':')[0] in self.command:
- if not flag:
- self.command_content.append(self.text_expend[:-1])
- self.show_list.append('文本:' + self.text_expend[:-1])
- flag = 1
- if eachline[:-1].split(':')[0] == '文本':
- flag = 0
- self.text_expend = ''
- self.text_expend += eachline.split(':')[1]
- self.command_list.append(eachline.split(':')[0])
- else:
- self.command_list.append(eachline[:-1].split(':')[0])
- self.command_content.append(eachline[:-1].split(':')[1])
- self.show_list.append(eachline[:-1])
- else:
- self.text_expend += eachline
- if not flag:
- self.command_content.append(self.text_expend[:-1])
- self.show_list.append('文本:' + self.text_expend[:-1])
- for each in self.show_list:
- self.ui.command_browser.append(each) #
- print(self.command_list, self.command_content, self.show_list)
- self.dur = 0.1
- self.interval = 0.1
- self.ui.pos_button.clicked.connect(self.pos_button)
- self.ui.clear_button.clicked.connect(self.clear_button)
- self.ui.click_button.clicked.connect(self.click_button)
- self.ui.drag_button.clicked.connect(self.drag_button)
- self.ui.key_button.clicked.connect(self.key_button)
- self.ui.text_button.clicked.connect(self.text_button)
- self.ui.insert_button.clicked.connect(self.insert_button)
- self.ui.do_button.clicked.connect(self.do_button)
- self.ui.del_button.clicked.connect(self.del_button)
- self.ui.clear_button_1.clicked.connect(self.clear_button_1)
- def pos_button(self):
- time.sleep(3)
- x, y = pa.position()
- s = 'X: ' + str(x).rjust(4) + ', Y: ' + str(y).rjust(4)
- self.ui.pos_browser.append(s)
- def clear_button(self):
- self.ui.pos_browser.clear()
- def click_button(self):
- try:
- delay = float(self.ui.delay_line.text()) if self.ui.delay_line.text() else 0
- mouse = self.ui.mouse_cbox.currentText()
- click_num = int(self.ui.click_num_line.text())
- click_time = float(self.ui.click_time_line.text()) if self.ui.click_time_line.text() else 0
- x, y = self.ui.click_pos_line.text().split()
- dur = float(self.ui.click_duration_line.text()) if self.ui.click_duration_line.text() else 1
- self.ui.label_show.setText('程序进行中,请勿关闭窗口!')
- thread_click = Thread(target=self.thread_click,
- args=(int(x), int(y), click_num, click_time, mouse, dur, delay))
- # pa.click(int(x), int(y), int(click_num), float(click_time), button=mouse, duration=int(dur))
- thread_click.start()
- except ValueError:
- QMessageBox.critical(self.ui, '错误', '输入有误,请重新输入!')
- def thread_click(self, x, y, click_num, click_time, mouse, dur, delay):
- time.sleep(delay)
- pa.click(x, y, click_num, click_time, button=mouse, duration=dur)
- self.ui.label_show.setText('')
- # QMessageBox.about(self.ui, '完成', '请进行下一步操作')
- def drag_button(self):
- try:
- delay = float(self.ui.delay_line.text()) if self.ui.delay_line.text() else 0
- mouse = self.ui.mouse_drag_cbox.currentText()
- a, b = self.ui.drag_pos_line.text().split()
- x, y = self.ui.drag_pos_line_1.text().split()
- dur = float(self.ui.drag_duration_line.text()) if self.ui.drag_duration_line.text() else 6
- self.ui.label_show.setText('程序进行中,请勿关闭窗口!')
- thread_drag = Thread(target=self.thread_drag,
- args=(int(a), int(b), int(x), int(y), mouse, dur, delay))
- thread_drag.start()
- except ValueError:
- QMessageBox.critical(self.ui, '错误', '输入有误,请重新输入!')
- def thread_drag(self, a, b, x, y, mouse, dur, delay):
- time.sleep(delay)
- pa.moveTo(a, b)
- pa.dragTo(x, y, button=mouse, duration=dur)
- self.ui.label_show.setText('')
- # QMessageBox.about(self.ui, '完成', '请进行下一步操作')
- def key_button(self):
- try:
- delay = float(self.ui.delay_line.text()) if self.ui.delay_line.text() else 0
- x, y = self.ui.key_pos_line.text().split()
- dur = float(self.ui.key_duration_line.text()) if self.ui.key_duration_line.text() else 1
- k = self.ui.key_cbox.currentText()
- choice = self.ui.key_choice_cbox.currentText()
- self.ui.label_show.setText('程序进行中,请勿关闭窗口!')
- thread_key = Thread(target=self.thread_key,
- args=(int(x), int(y), dur, delay, k, choice))
- thread_key.start()
- except ValueError:
- QMessageBox.critical(self.ui, '错误', '输入有误,请重新输入!')
- def thread_key(self, x, y, dur, delay, k, choice):
- time.sleep(delay)
- pa.click(x, y, duration=dur)
- if choice == 'press':
- pa.press(k)
- elif choice == 'KeyDown':
- pa.keyDown(k)
- else:
- pa.keyUp(k)
- self.ui.label_show.setText('')
- # QMessageBox.about(self.ui, '完成', '请进行下一步操作')
- def text_button(self):
- try:
- delay = float(self.ui.delay_line.text()) if self.ui.delay_line.text() else 0
- x, y = self.ui.text_pos_line.text().split()
- dur = float(self.ui.text_duration_line.text()) if self.ui.text_duration_line.text() else 1
- content = self.ui.text_text.toPlainText()
- self.ui.label_show.setText('程序进行中,请勿关闭窗口!')
- thread_text = Thread(target=self.thread_text,
- args=(int(x), int(y), dur, delay, content))
- thread_text.start()
- except ValueError:
- QMessageBox.critical(self.ui, '错误', '输入有误,请重新输入!')
- def thread_text(self, x, y, dur, delay, content):
- time.sleep(delay)
- pa.click(x, y, duration=dur)
- pp.copy(content)
- pa.hotkey('ctrl', 'v')
- self.ui.label_show.setText('')
- # QMessageBox.about(self.ui, '完成', '请进行下一步操作')
- def insert_button(self):
- try:
- command = self.ui.com_cbox.currentText()
- content = self.ui.com_text.toPlainText()
- self.command_list.append(command)
- if command in ['鼠标左键', '鼠标右键', '鼠标左键双击']:
- show = command + ':'
- self.command_content.append(content)
- elif command in ['按键', '按键按下', '按键松开']:
- show = command + ':' + self.ui.key_cbox.currentText()
- self.command_content.append(self.ui.key_cbox.currentText())
- elif command in ['鼠标移动', '文本', '操作间隔时间', '操作移动时间', '鼠标左键拖拽', '鼠标左键拖拽']:
- if command in ['鼠标移动', '鼠标左键拖拽', '鼠标左键拖拽']:
- int(content.split()[0])
- int(content.split()[1])
- if len(content.split()) != 2:
- raise IndexError
- elif command in ['操作间隔时间', '操作移动时间']:
- float(content)
- show = command + ':' + content
- self.command_content.append(content)
- self.ui.command_browser.append(show)
- self.show_list.append(show)
- self.ui.com_text.clear()
- except (ValueError, IndexError):
- QMessageBox.critical(self.ui, '错误', '输入有误,请重新输入!')
- def do_button(self):
- try:
- if not self.command_list:
- raise ValueError
- self.ui.label_show.setText('程序进行中,请勿关闭窗口!')
- thread_do = Thread(target=self.thread_do,
- args=())
- thread_do.start()
- except ValueError:
- QMessageBox.critical(self.ui, '错误', '请输入指令!')
- def thread_do(self):
- delay = float(self.ui.delay_line.text()) if self.ui.delay_line.text() else 0
- time.sleep(delay)
- for index in range(len(self.command_list)):
- if self.command_list[index] == '鼠标移动':
- pa.moveTo(int(self.command_content[index].split()[0]), int(self.command_content[index].split()[1]))
- elif self.command_list[index] == '鼠标左键':
- pa.click()
- elif self.command_list[index] == '鼠标右键':
- pa.click(button='right')
- elif self.command_list[index] == '鼠标左键双击':
- pa.doubleClick()
- elif self.command_list[index] == '鼠标左键拖拽':
- pa.dragTo(int(self.command_content[index].split()[0]), int(self.command_content[index].split()[1]), duration=6)
- elif self.command_list[index] == '鼠标右键拖拽':
- pa.dragTo(int(self.command_content[index].split()[0]), int(self.command_content[index].split()[1]), button='right', duration=6)
- elif self.command_list[index] == '按键':
- pa.press(self.command_content[index])
- elif self.command_list[index] == '按键按下':
- pa.keyDown(self.command_content[index])
- elif self.command_list[index] == '按键松开':
- pa.keyUp(self.command_content[index])
- elif self.command_list[index] == '文本':
- pp.copy(self.command_content[index])
- pa.hotkey('ctrl', 'v')
- elif self.command_list[index] == '操作移动时间':
- self.dur = int(self.command_content[index])
- elif self.command_list[index] == '操作间隔时间':
- self.interval = int(self.command_content[index])
- time.sleep(self.interval)
- with open('command.txt', 'w') as f:
- for each in self.show_list:
- f.write(each + '\n')
- self.ui.label_show.setText('')
- # QMessageBox.about(self.ui, '完成', '请进行下一步操作')
- def del_button(self):
- try:
- self.command_content.pop()
- self.command_list.pop()
- self.show_list.pop()
- self.ui.command_browser.clear()
- for each in self.show_list:
- self.ui.command_browser.append(each)
- except IndexError:
- pass
- def clear_button_1(self):
- self.command_content.clear()
- self.command_list.clear()
- self.show_list.clear()
- self.ui.command_browser.clear()
- app = QApplication([])
- app.setWindowIcon(QIcon('ico.png'))
- mainwin = MainWin()
- mainwin.ui.show()
- app.exec_()
复制代码 |
|