我在windows 8中使用python 3.4.4(32位(进行编程。我正在使用PyQt5运行一个应用程序,该应用程序运行良好,但由于我安装了pywinauto 0.6.4,以将重点放在其他应用程序上:
other_app = pywinauto.Application().connect(process=int(code))
other_app.top_window().set_focus()
如果我运行My_app = QApplication(sys.argv)
,控制台中会出现下一条警告消息,但没有其他信息:
QWindowsContext: OleInitialize() failed: "COM error 0x80010106 RPC_E_CHANGED_MODE (Unknown error 0x0ffffffff80010106)"
SetProcessDpiAwareness failed: "COM error 0x80070005 (Unknown error 0x0ffffffff80070005)"
我怀疑这是因为pywinauto
和PyQt5.QtWidgets.QApplication
模块之间存在冲突。在"警告"后,程序运行良好,但我现在仍然不知道如何修复它。
这是最小、完整和可验证的示例:
from PyQt5.QtWidgets import QApplication
import pywinauto
import sys
def main():
app = QApplication(sys.argv)
app.exec_()
if __name__ == '__main__':
main()
根据这篇文章,解决方法是使用sys.coinit_flags = 2
和警告模块。
import sys
import warnings
warnings.simplefilter("ignore", UserWarning)
sys.coinit_flags = 2
import pywinauto
from PyQt5.QtWidgets import QApplication, QMainWindow
def main():
app = QApplication(sys.argv)
w = QMainWindow()
w.show()
app.exec_()
if __name__ == '__main__':
main()
我在使用PySide2时也遇到了同样的问题。就我而言,进口订单起了作用。也就是说,我使用
import clr
必须放置在之后
app = QApplication(sys.argv)
尝试以这种方式导入:
from PyQt5 import QtWidgets
...
app = QtWidgets.QApplication(sys.argv)
w = QMainWindow()
w.show()
app.exec_()
这对我有用。