我正在使用PyQt5 QFileDialog.getOpenFileName。在单击“打开”按钮之前,我希望该框保持打开状态。但是,当我在我的 Linux 系统上运行代码时,单击文件名时对话框立即关闭。在 Windows 系统上,该框按预期运行并保持打开状态,直到单击“打开”按钮。无论是否设置选项,结果都相同QFileDialog.DontUseNativeDialog。
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QFileDialog
import sys
class Main(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QFileDialog Test")
button = QPushButton("Click to open file")
button.setCheckable(True)
button.clicked.connect(self.open_file)
# Set the central widget of the Window.
self.setCentralWidget(button)
def open_file(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
file_name, _ = QFileDialog.getOpenFileName(None, "Open File",
"", "Python Files (*.py);;Text Files (*.txt)",options=options)
app = QApplication(sys.argv)
window = Main()
window.show()
app.exec_()
编辑:我退出 KDE 并开始一个 Openbox 会话,然后运行上面的代码。QFileDialog 的行为如我所料,等待我单击“打开”按钮。这验证了 KDE / KWin 是否存在问题,并且在其他窗口管理器下运行的代码可能会正常工作。
仍然不是一个真正的解决方案,但我现在比以前更了解情况。
第二次编辑:我发现如果我将工作区行为 -> 一般行为 -> 单击行为从单击更改为双击,我的 QFileDialog 问题就会消失。不过,如何解决这个问题将是一个不同的话题。
第三次编辑:向示例代码添加了“QFileDialog.DontUseNativeDialog”选项。
临摹微笑
相关分类