PySide6.QTest.mouseClick未在文档列出却可用,是否已废弃?
关于PySide6.QtTest.QTest.mouseClick方法的疑问解答
你获取的PyQt5测试代码如下:
import sys import unittest import threading from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QMessageBox, QApplication from PyQt5.QtTest import QTest class Fortest: def messagebox(self): app = QApplication(sys.argv) msg = QMessageBox() msg.setIcon(QMessageBox.Warning) msg.setText("message text") msg.setStandardButtons(QMessageBox.Close) msg.buttonClicked.connect(msg.close) msg.exec_() class Test(unittest.TestCase): def testMessagebox(self): a = Fortest() threading.Timer(1, self.execute_click).start() a.messagebox() def execute_click(self): w = QApplication.activeWindow() if isinstance(w, QMessageBox): close_button = w.button(QMessageBox.Close) QTest.mouseClick(close_button, Qt.LeftButton)
针对你的疑问,解答如下:
核心结论
mouseClick方法并没有被废弃,只是PySide6的官方文档存在疏漏,没把这个方法列出来而已。
详细说明
- 底层实现依据:PySide6是Qt C的Python绑定,而Qt C官方文档里
QTest::mouseClick是明确支持的标准方法,PySide6只是将其封装成Python接口,所以方法本身是合法有效的。 - 文档遗漏原因:这类情况在PySide/PyQt的版本迭代中偶尔出现,大概率是文档生成工具的问题,或是版本更新时文档同步不及时导致的。
- 使用建议:只要你的代码能正常调用并运行
mouseClick,就完全可以继续使用,不用顾虑废弃风险。后续官方文档更新时,很大概率会补上这个方法的说明。
可选替代方案
如果实在担心文档遗漏带来的不确定性,也可以用mousePress加mouseRelease的组合来模拟完整点击,效果和mouseClick完全一致:
QTest.mousePress(close_button, Qt.LeftButton) QTest.mouseRelease(close_button, Qt.LeftButton)
内容的提问来源于stack exchange,提问作者Bob
相关产品推荐
相关产品推荐

