不确定这是一个错误还是什么,但这让我发疯。我在 Win 7 上使用 Python 3.5.4 32 位。如果将 pywinauto 导入到脚本中,PyQt5 的文件查找器将无法工作。如果有人可以检查此脚本是否适用于他们(测试"file">“导入”按钮):
from PyQt5 import QtWidgets
import sys
#import pywinauto
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 800, 600)
import_folder = QtWidgets.QAction("import", self)
import_folder.triggered.connect(self.open_folder)
main_menu = self.menuBar()
fileMenu = main_menu.addMenu("&File")
fileMenu.addAction(import_folder)
self.show()
def open_folder(self):
folder = QtWidgets.QFileDialog.getExistingDirectory(self, "Open folder")
app = QtWidgets.QApplication(sys.argv)
main = Window()
sys.exit(app.exec_())
运行后,尝试取消注释 pywinauto 导入并再次运行脚本 - 它对我不起作用。 Pywinauto 正在破坏我的文件浏览器,但我的程序中需要它!没有错误或任何东西,应用程序只是卡住并且没有响应。我不知道发生了什么事。如果有人可以测试一下那就太好了。如果您有任何指导,干杯。
我们可以找出问题出在 PyQt 内部,因为它总是尝试使用单线程模式 (STA),而 import pywinauto
已经使用多线程模式 (MTA) 初始化了 COM。解决方法是:
import sys
sys.coinit_flags = 2 # STA
import pywinauto
它可能会产生此警告(没关系):
UserWarning: Apply externally defined coinit_flags: 2
.format(module_sys.coinit_flags), UserWarning)
我是一名优秀的程序员,十分优秀!