为了账号安全,请及时绑定邮箱和手机立即绑定

PyQt4和PyQt5中的QFileDialog字符串之间有区别吗?

PyQt4和PyQt5中的QFileDialog字符串之间有区别吗?

忽然笑 2020-02-02 15:41:00
我有一段代码使用Python3和PyQt5打开QFileDialog:from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialogimport sysclass MCVE(QWidget):    def __init__(self):        super().__init__()        self.initialize()    def initialize(self):        self.setWindowTitle('MCVE')        self.setGeometry(50, 50, 400, 200)        btn = QPushButton('Example', self)        btn.clicked.connect(self.clicked)        self.show()    def clicked(self):        filename = QFileDialog.getOpenFileName(            self, "Open Template", "c:\\",            "Templates (*.xml);;All Files (*.*)")        print(filename)if __name__ == '__main__':    app = QApplication(sys.argv)    ex = MCVE()    sys.exit(app.exec_())在使用PyQt4的Python 2中,按下取消按钮后,print(filename)语句输出为空字符串。当我使用PyQt5在Python 3中运行相同的代码时,我得到:('','')注意:引号是单引号有人可以解释发生了什么吗?我在PyQt4和PyQt5之间的文档下找不到任何内容。我知道在Python 2和Python 3之间字符串发生了变化,但是我不确定这些变化是否会引起这样的问题。谢谢!
查看完整描述

2 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

getOpenFileNamePyQt4中的函数返回一个字符串,该字符串是所选文件的名称,如果未选择任何名称,则它将返回一个空字符串。


filename = QFileDialog.getOpenFileName(self, "Open Template", "c:\\", "Templates (*.xml);;All Files (*.*)")

但是,在PyQt5中,这将返回2个元素的元组,其中第一个是与PyQt4具有相同行为的字符串,第二个是所使用的过滤器。


filename, filters = QFileDialog.getOpenFileName(self, "Open Template", "c:\\", "Templates (*.xml);;All Files (*.*)")

注意:PyQt5的大多数文档都在Qt5中,因为通常方法的名称,输入和结果都是相似的。


查看完整回答
反对 回复 2020-02-02
  • 2 回答
  • 0 关注
  • 448 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信