吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 216|回复: 8
收起左侧

[学习记录] 记录一个PyQt6中QFileDialog.getOpenFileName相关的Bug

[复制链接]
hhh1234567 发表于 2025-3-29 16:21
本帖最后由 hhh1234567 于 2025-3-29 16:44 编辑

今天闲着没事突然想着使用pywinautoPyQt6库写一个自动化脚本来进行打印
嘿,你猜怎么着,刚写好一个打开文件页面UI页面单击按钮页面就无响应,然后直接奔溃了

代码如下:

import sys
from PyQt6.QtWidgets import (
    QApplication, QWidget, QPushButton, QFileDialog, QVBoxLayout
)

from pywinauto import application

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(200, 200, 400, 300)
        self.setWindowTitle("Printing Tool")
        self.initUI()

    def initUI(self):
        self.layout = QVBoxLayout()
        self.setLayout(self.layout)

        self.btn = QPushButton(self)
        self.btn.setText('Select File')
        self.layout.addWidget(self.btn)
        self.btn.clicked.connect(self.select_file)

    def select_file(self):
        file_path, _ = QFileDialog.getOpenFileName(self, "选择文件", "", "所有文件 (*.*);;文本文件 (*.txt);;图片文件 (*.png *.jpg)")
        if file_path:
            print(f"Selected file: {file_path}")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit(app.exec()

执行上面代码就卡死也不知道为啥,然后突然我把 from pywinauto import application这行语句删除,突然又可以正常运行了



记录一下,有哪位大佬知道什么原因也麻烦指点一下

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

devilpanama 发表于 2025-3-29 18:53
感觉是pywinauto的application和pyqt的冲突了,你单独命名试试
klmatao 发表于 2025-3-29 20:36
你倒是把完整的错误截图附上啊,看不到咋知道啥原因呢?
Lynn_ 发表于 2025-3-29 21:33
 楼主| hhh1234567 发表于 2025-3-29 22:42
klmatao 发表于 2025-3-29 20:36
你倒是把完整的错误截图附上啊,看不到咋知道啥原因呢?

没有提示错误,也不会异常错误,只要引入pywinauto的application就会卡死
我心飞翔1995 发表于 2025-3-29 22:51
问题来源和解决方法:
Tkinter filedialog.askdirectory() freezing when importing pywinauto · Issue #517 · pywinauto/pywinauto
https://github.com/pywinauto/pywinauto/issues/517
我心飞翔1995 发表于 2025-3-29 22:52
有时候,遇到导致问题的库,可以去这个库的官方问题反馈渠道寻找答案
我心飞翔1995 发表于 2025-3-29 22:53
在导入pywinauto之前,先执行以下代码:
import sys
sys.coinit_flags = 2
 楼主| hhh1234567 发表于 2025-3-30 10:19
我心飞翔1995 发表于 2025-3-29 22:53
在导入pywinauto之前,先执行以下代码:
import sys
sys.coinit_flags = 2

感谢大佬,可以了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-25 22:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表