alouha2333 2022-05-06 19:40 采纳率: 100%
浏览 83
已结题

一样的代码和环境,代码失效(标签-QT|关键词-Thread)

后台点击代码无法实现点击效果

class Thread_1(QThread):  # 线程1
    def __init__(self):
        super().__init__()

    def run(self):
        AccountLogin.begin()


class CUi_MainWindow(QMainWindow, Ui_MainWindow):  # 继承于UI父类
    def __init__(self, parent=None):
        super(CUi_MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.init_login_info()
        self.pushButton.clicked.connect(self.start)
        self.pushButton_2.clicked.connect(self.pause)

    def save(self):
        settings = QSettings("config.ini", QSettings.IniFormat)
        settings.setValue("excl_path", self.lineEdit.text())
        settings.setValue("share_path", self.lineEdit_2.text())
        settings.setValue("ld_path", self.lineEdit_3.text())
        settings.setValue("thread", self.comboBox.currentIndex())
        settings.setValue("table", self.comboBox_2.currentIndex())

    def init_login_info(self):
        settings = QSettings("config.ini", QSettings.IniFormat)
        ld_path = settings.value("ld_path")
        share_path = settings.value("share_path")
        excl_path = settings.value("excl_path")
        thread = settings.value("thread")
        table = settings.value("table")
        pause = settings.value("pause")
        if str(pause) == "恢复":
            self.pushButton_2.setText("暂停")
        elif str(pause) == "暂停":
            settings.setValue("pause", "恢复")
            self.pushButton_2.setText("暂停")
        self.lineEdit.setText(excl_path)
        self.lineEdit_2.setText(share_path)
        self.lineEdit_3.setText(ld_path)
        self.comboBox_2.setCurrentIndex(int(table))
        self.comboBox.setCurrentIndex(int(thread))

    def start(self):
        self.save()
        self.thread_1 = Thread_1()  # 创建线程
        self.thread_1.start()  # 开始线程

——————————————————————————————————
    def doClick(bind, cx, cy):  # 点击坐标
        AccountLogin.lock.acquire()
        long_position = win32api.MAKELONG(cx, cy)  # 模拟鼠标指针 传送到指定坐标
        win32api.SendMessage(bind, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position)  # 模拟鼠标按下
        sleep(0.1)
        win32api.SendMessage(bind, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position)  # 模拟鼠标弹起
        sleep(0.5)
        AccountLogin.lock.release()
        print('点击', bind, cx, cy, '坐标')

想做一个雷电模拟器账号登录的脚本,其中有一段利用win32实现后台点击的代码,独立运行的情况下,一切都正常,但是一旦通过PYQT运行主程序,该代码段依然能跑通,但是无法实现点击效果。系统也没有报错,检查过所有的参数都是正确的。整个主程序能全部跑通,系统无报错,界面点击事件也是正常的。

  • 写回答

1条回答 默认 最新

  • hyh123a 全栈领域新星创作者 2022-05-06 20:15
    关注

    简单排查一下吧
    排查步骤:
    1、先明确Pyqt运行的主程序中,点击事件是否生效,

    点击函数修改如下所示:(当然你直接用编辑器debug也行),

    def doClick(bind, cx, cy):  # 点击坐标
        print("0")
        AccountLogin.lock.acquire()
        print("1")
        long_position = win32api.MAKELONG(cx, cy)  # 模拟鼠标指针 传送到指定坐标
        print("2")
        win32api.SendMessage(bind, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position)  # 模拟鼠标按下
        print("3")
        sleep(0.1)
        print("4")
        win32api.SendMessage(bind, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position)  # 模拟鼠标弹起
        print("5")
        sleep(0.5)
        print("6")
        AccountLogin.lock.release()
        print("7")
        print('点击', bind, cx, cy, '坐标')
    

    2、看下点击事件函数是否响应 以及响应到了哪一步停止了,
    将结果输出来分析接着讨论下一步。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月7日
  • 已采纳回答 5月6日
  • 修改了问题 5月6日
  • 创建了问题 5月6日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!