【发布时间】:2019-10-05 00:23:24
【问题描述】:
我正在尝试使用 GUI 文件选择对话框编写一个简单的脚本,并将选定的文件名返回给主程序代码。我在网上查找了一些想法,但我对这一切如何运作感到困惑。我有以下代码:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog, QMessageBox
from PyQt5.QtGui import QIcon
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'Bla'
self.left = 10
self.top = 10
self.width = 640
self.height = 480
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.openFileNameDialog()
self.show()
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()", "","All Files (*);;Python Files (*.py)", options=options)
return(fileName)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
alert = QMessageBox()
alert.setText(f'selected file {ex}')
alert.exec_()
sys.exit(app.exec_())
我添加了一个消息框来查看文件选择是否正常,但如果我运行它,消息框会显示:
selected file <_main_.App object at 0x0000000002EA9288>
同时,当我将消息框放入 openFileNameDialog 时,一切正常:
~snip~
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()", "","All Files (*);;Python Files (*.py)", options=options)
alert = QMessageBox()
alert.setText(f'selected file {fileName}')
alert.exec_()
~snip~
所以问题是如何正确地将文件名返回给主程序?提前感谢您的帮助!
【问题讨论】:
标签: python pyqt5 qfiledialog