将小部件(QCheckBox)添加到 PyQt5(Python)中的 QFileDialog 不起作用

用户12751192

我想将 QCheckBox 添加到 QFileDialog。我想使用静态方法 QFileDialog.getSaveFileName() 来显示对话框。

我发现了几个类似的问题,都在 C++ 中:

  1. 如何在 QT3 的 QFileDialog 窗口中添加复选框?
  2. 在 QFileDialog 中添加小部件
  3. https://www.qtcentre.org/threads/42858-Creating-a-Custom-FileOpen-Dialog
  4. https://forum.qt.io/topic/103964/add-checkbox-to-qfiledialog/7

我尽力将这些讨论翻译成 python,但还没有找到解决方案。我的代码运行,但复选框不显示,即使我使用 QFileDialog.DontUseNativeDialog。

这就是我对 QFileDialog 进行子类化的方式:

from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtWidgets import QCheckBox

class ChkBxFileDialog(QFileDialog):
    def __init__(self, chkBxTitle=""):
        super().__init__()
        self.setOption(QFileDialog.DontUseNativeDialog)
        chkBx = QCheckBox(chkBxTitle)
        self.layout().addWidget(chkBx)
    #end __init__
#end ChkBxFileDialog

我以两种方式运行它。

选项 1(带有额外的 QFileDialog.DontUseNativeDialog):

import sys    
from PyQt5.QtWidgets import QApplication
if __name__ == "__main__":
        app = QApplication(sys.argv)
        fileDialog = ChkBxFileDialog(chkBxTitle="Chkbx")
        fileName = fileDialog.getSaveFileName(filter='*.txt', initialFilter='*.txt',
                                              options=QFileDialog.DontUseNativeDialog)[0]
        sys.exit(app.exec_())

选项 2(没有额外的 QFileDialog.DontUseNativeDialog):

import sys    
from PyQt5.QtWidgets import QApplication    
if __name__ == "__main__":
        app = QApplication(sys.argv)
        fileDialog = ChkBxFileDialog(chkBxTitle="Chkbx")
        fileName = fileDialog.getSaveFileName(filter='*.txt', initialFilter='*.txt')[0]
        sys.exit(app.exec_())

该复选框不会与任一选项一起显示。选项 1 使用不同的窗口样式。选项 2 显示了典型的 PyQt QFileDialog。

有谁知道我错过了什么?

意大利

我想使用静态方法QFileDialog.getSaveFileName()来显示对话框

那是不可能的。C++ 代码中定义的静态方法对您的派生类一无所知,因此它将创建基类的一个实例,其中不包含您的修改。您必须显式实例化您的派生类,调用exec()实例,检查返回代码并可能调用其selectedFiles()方法以查看选择了哪些文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

PyQt QtGui.QFileDialog不起作用?

将QFileDialog作为小部件添加到另一个QDialog中

Pyqt5 QFileDialog 在我的获取目录程序中不起作用

Python PyQt Pyside-QFileDialog中的setNameFilters不起作用

PyQt5 QFileDialog - 在 QListView 小部件中突出显示建议的文件

将python添加到Windows路径不起作用

PyQt5 - 如何将 Qfiledialog 带到前面?

多个按钮在 PyQt5 python 中不起作用

将小部件添加到布局后 QStylesheet 不起作用

PyQt QFileDialog getOpenFileName从命令行不起作用(Windows)

为什么QFileDialog :: selectFile不起作用?

与PyQt5 QFileDialog混淆

添加到数组中时,预算不起作用

将笨拙的小部件添加到 PyQt5 GUI

将 MouseDoubleClickEvent 添加到在 PyQt5 的 for 循环中制作的小部件

当我将小部件添加到第二个窗口时,PyQt5 崩溃了 python

添加额外的年份时,将php日期添加到JS函数中不起作用

PyQt-将右键单击添加到小部件

PyQt5,向选项卡添加文本不起作用

PyQt5 向线程添加第二个函数但不起作用

PyQt5 - 将逻辑与 ui 分开导致功能不起作用

使用xslt将子元素添加到xml中的列表中不起作用

在Android GoogleMap API 2中将点添加到PolylineOptions中不起作用

将列添加到函数中的数据框不起作用

使用自动布局以编程方式将子视图添加到UICollectionView中不起作用

将选项添加到选择项在Internet Explorer中不起作用

使用javac -cp将Jar文件添加到Java程序中不起作用

将动态图像添加到表列在angularjs中不起作用

将标头添加到使用HtmlToOpenXml创建的Word文档中不起作用