有没有办法阻止QWindowsNativeFileDialog::OnSelectionChange(Qurl...)登录出命令行?

问题描述 投票:0回答:1

我看到PyQt5中的文件对话框小部件会在命令行中记录下来。QWindowsNativeFileDialogBase::onSelectionChange (QUrl...) 每次我与它交互时,都会将信息输入命令行。有什么方法可以阻止这种情况的发生吗?


当前的输出。

你可以看到当我点击 "codetesting.py "时 命令行中会弹出信息

enter image description here


注销的例子。

QWindowsNativeFileDialogBase::onSelectionChange (QUrl("file:///C:/Users/user/Documents/WaferMapViewerProject/src/main/python/codetesting.py")) 1

可运行的代码

当你运行这段代码时,会弹出一个窗口,中间有一个按钮。点击后会打开文件对话框。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 button - pythonspot.com'
        self.left = 50
        self.top = 50
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        button = QPushButton('PyQt5 button', self)
        button.setToolTip('This is an example button')
        button.move(100, 70)
        button.clicked.connect(self.on_click)

        self.show()

    @pyqtSlot()
    def on_click(self):
        print('PyQt5 button click')
        fname = QFileDialog.getOpenFileName()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

python pyqt pyqt5
1个回答
2
投票

你可以使用以下方法禁用日志记录 QLoggingCategory:

from PyQt5.QtCore import QLoggingCategory

QLoggingCategory.setFilterRules('qt.qpa.dialogs.debug=false')

import os
# ...

if __name__ == '__main__':

    os.environ["QT_LOGGING_RULES"] = "*.debug=false"

    app = QApplication(sys.argv)

    # ...
© www.soinside.com 2019 - 2024. All rights reserved.