簡體   English   中英

PyQt5 QFileDialog 不適用於 pywinauto 導入

[英]PyQt5 QFileDialog does not work with pywinauto import

不確定這是錯誤還是什么,但它讓我發瘋。 我在 Win 7 上使用 Python 3.5.4 32 位。如果將 pywinauto 導入腳本, PyQt5 的文件查找器將無法工作 如果有人可以檢查此腳本是否適用於他們(測試“文件”>“導入”按鈕):

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM