Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Qt剪贴板操作在OSX上的测试中不起作用_Python_Macos_Qt - Fatal编程技术网

Python Qt剪贴板操作在OSX上的测试中不起作用

Python Qt剪贴板操作在OSX上的测试中不起作用,python,macos,qt,Python,Macos,Qt,我有一个小部件,其中mac快捷方式命令+C交互效果很好,内容正确地存储在剪贴板中 我试图在单元测试中实现相同的行为。它可以在其他平台上工作,但不能在Mac上工作 expected_clipboard = "whatever" self._widget.show() Test.processEvents() QtTest.QTest.keyClick(self._widget, QtCore.Qt.Key_C, QtCore.Qt.ControlModifier)

我有一个小部件,其中mac快捷方式命令+C交互效果很好,内容正确地存储在剪贴板中

我试图在单元测试中实现相同的行为。它可以在其他平台上工作,但不能在Mac上工作

    expected_clipboard = "whatever"
    self._widget.show()
    Test.processEvents()

    QtTest.QTest.keyClick(self._widget, QtCore.Qt.Key_C, QtCore.Qt.ControlModifier)
    Test.processEvents()

    current_clipboard= QtGui.qApp.clipboard().text()
    self.assertEqual(current_clipboard, expected_clipboard) # Fails.
根据Qt文档,ControlModifier是Mac上命令的适当对应实体。出于好奇,我也尝试了MetaModifier,但它不起作用

操作正确地附加了以下代码

       self._action = QtGui.QAction('text', self) 
       action.connect(self._action, QtCore.SIGNAL('triggered()'), self.copyAction)
       self._action.setShortcut(QtGui.QKeySequence.Copy)
       self.addAction(self._action)

Qt 4.8最新版本,osx 10.8。

好的,问题是窗口必须可见、升起并激活,否则osx不会传递事件。只需调用widget.raise和widget.activateWindow