PyQt4 和 PyQt5 中的 QFileDialog 字符串有区别吗?
Is there a difference between QFileDialog strings in PyQt4 and PyQt5?
我有一段代码使用 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_())
在Python2中使用PyQt4的print(filename)语句,按下取消按钮后,输出为空字符串。当我使用 PyQt5 运行 Python 3 中的相同代码时,我得到:
('', '')
注意:引号是单引号
谁能解释一下这是怎么回事?我在 PyQt4 和 PyQt5 之间的文档下找不到任何内容。我知道字符串在 Python 2 和 Python 3 之间发生了变化,但我不确定这些变化是否会导致这样的问题。谢谢!
PyQt4 中的getOpenFileName
函数 returns 一个字符串,它是所选文件的名称,如果选择 none 则它 returns 一个空字符串。
filename = QFileDialog.getOpenFileName(self, "Open Template", "c:\", "Templates (*.xml);;All Files (*.*)")
但是在 PyQt5 中,这个 returns 一个包含 2 个元素的元组,其中第一个元素是一个字符串,与 PyQt4 中的行为相同,第二个元素是使用的过滤器。
filename, filters = QFileDialog.getOpenFileName(self, "Open Template", "c:\", "Templates (*.xml);;All Files (*.*)")
注意:PyQt5 的大部分文档都在 Qt5 中,因为通常方法的名称、输入和结果都是相似的。
我有一段代码使用 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_())
在Python2中使用PyQt4的print(filename)语句,按下取消按钮后,输出为空字符串。当我使用 PyQt5 运行 Python 3 中的相同代码时,我得到:
('', '')
注意:引号是单引号
谁能解释一下这是怎么回事?我在 PyQt4 和 PyQt5 之间的文档下找不到任何内容。我知道字符串在 Python 2 和 Python 3 之间发生了变化,但我不确定这些变化是否会导致这样的问题。谢谢!
PyQt4 中的getOpenFileName
函数 returns 一个字符串,它是所选文件的名称,如果选择 none 则它 returns 一个空字符串。
filename = QFileDialog.getOpenFileName(self, "Open Template", "c:\", "Templates (*.xml);;All Files (*.*)")
但是在 PyQt5 中,这个 returns 一个包含 2 个元素的元组,其中第一个元素是一个字符串,与 PyQt4 中的行为相同,第二个元素是使用的过滤器。
filename, filters = QFileDialog.getOpenFileName(self, "Open Template", "c:\", "Templates (*.xml);;All Files (*.*)")
注意:PyQt5 的大部分文档都在 Qt5 中,因为通常方法的名称、输入和结果都是相似的。