gpt4 book ai didi

python - PyQt4 和 PyQt5 中的 QFileDialog 字符串有区别吗?

转载 作者:行者123 更新时间:2023-11-28 22:23:25 25 4
gpt4 key购买 nike

我有一段代码可以使用 Python3 和 PyQt5 打开 QFileDialog:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog
import sys


class 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 之间发生了变化,但我不确定这些变化是否会导致这样的问题。谢谢!

最佳答案

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

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 中,因为通常方法的名称、输入和结果是相似的。

关于python - PyQt4 和 PyQt5 中的 QFileDialog 字符串有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47041271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com