*Python +Qt 实现simulator
本文介绍如何通过Python + Qt实现通过adb方式连接到手机,实时响应鼠标点击操作。
#encoding=UTF-8
import os
import sys
import re
import subprocess
import traceback
#from win32api import GetSystemMetrics
from win32api import GetSystemMetrics
from PyQt5.Qt import QApplication, QMainWindow, QWidget, QHBoxLayout,\
QVBoxLayout, QPushButton, QImage, QLabel, QPixmap, QPainter, QTimer, QPoint,\
Qt
import PyQt5
from PyQt5.QtWidgets import QCheckBox
screenshot_way = 0
timer_interval = 1000 #ms
g_scale = 1
debug_ui = True
screen_720p = (1920, 1080)
screen_1080p = (1920, 1080)
screen_2k = (2560, 1440)
screen_4k = (3840, 2160)
(KEYCODE_UNKNOWN, KEYCODE_MENU1, KEYCODE_SOFT_RIGHT, KEYCODE_HOME, KEYCODE_BACK) = (0, 1, 2, 3, 4)
(KEYCODE_CALL, KEYCODE_ENDCALL, KEYCODE_0, KEYCODE_1, KEYCODE_2) = (5, 6, 7, 8, 9)
(KEYCODE_3, KEYCODE_4, KEYCODE_5, KEYCODE_6, KEYCODE_7) = (10, 11, 12, 13, 14)
(KEYCODE_8, KEYCODE_9, KEYCODE_STAR, KEYCODE_POUND, KEYCODE_DPAD_UP) = (15, 16, 17, 18, 19)
(KEYCODE_DPAD_DOWN, KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHT, KEYCODE_DPAD_CENTER, KEYCODE_VOLUME_UP) = (20, 21, 22, 23, 24)
(KEYCODE_VOLUME_DOWN, KEYCODE_POWER, KEYCODE_CAMERA, KEYCODE_CLEAR, KEYCODE_A) = (25, 26, 27, 28, 29)
(KEYCODE_B, KEYCODE_C, KEYCODE_D, KEYCODE_E, KEYCODE_F) = (30, 31, 32, 33, 34)
(KEYCODE_G, KEYCODE_H, KEYCODE_I, KEYCODE_J, KEYCODE_K) = (35, 36, 37, 38, 39)
(KEYCODE_L, KEYCODE_M, KEYCODE_N, KEYCODE_O, KEYCODE_P) = (40, 41, 42, 43, 44)
(KEYCODE_Q, KEYCODE_R, KEYCODE_S, KEYCODE_T, KEYCODE_U) = (45, 46, 47, 48, 49)
(KEYCODE_V, KEYCODE_W, KEYCODE_X, KEYCODE_Y, KEYCODE_Z) = (50, 51, 52, 53, 54)
(KEYCODE_COMMA, KEYCODE_PERIOD, KEYCODE_ALT_LEFT, KEYCODE_ALT_RIGHT, KEYCODE_SHIFT_LEFT) = (55, 56, 57, 58, 59)
(KEYCODE_SHIFT_RIGHT, KEYCODE_TAB, KEYCODE_SPACE, KEYCODE_SYM, KEYCODE_EXPLORER) = (60, 61, 62, 63, 64)
(KEYCODE_ENVELOPE, KEYCODE_ENTER, KEYCODE_DEL, KEYCODE_GRAVE, KEYCODE_MINUS) = (65, 66, 67, 68, 69)
(KEYCODE_EQUALS, KEYCODE_LEFT_BRACKET, KEYCODE_RIGHT_BRACKET, KEYCODE_BACKSLASH, KEYCODE_SEMICOLON) = (70, 71, 72, 73, 74)
(KEYCODE_APOSTROPHE, KEYCODE_SLASH, KEYCODE_AT, KEYCODE_NUM, KEYCODE_HEADSETHOOK) = (75, 76, 77, 78, 79)
(KEYCODE_FOCUS, KEYCODE_PLUS, KEYCODE_MENU, KEYCODE_NOTIFICATION, KEYCODE_SEARCH) = (80, 81, 82, 83, 84)
def adbAvailable():
process = subprocess.Popen("adb devices", shell=True, stdout=subprocess.PIPE)
b_str = process.stdout.read()
b_str.replace(b'\r\n', b'\n')
out_str = str