使用 PySide2 的文件浏览器:获取文件的路径,然后终止 GUI
File Browser with PySide2: get the path of the file and then kill the GUI
我有以下代码并想执行以下操作:
- 最重要的一点:单击文件并获取其文件路径后,我希望 GUI 退出,因为我会将该路径提供给另一个脚本 (
another_script
),然后我将导入该脚本
我的问题是,在脚本成功打印所选文件的路径后,GUI 不会自行终止,我无法 运行 another_script
并且我卡在了终端
import sys
from PySide2.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PySide2.QtGui import QIcon
class App(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.openFileNameDialog()
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,
"QFileDialog.getOpenFileName()",
"","All Files (*);;Python Files (*.py)",
options=options)
if fileName:
print(fileName)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
import another_script
即使您选择了文件,事件循环仍将继续 运行,一个可能的解决方案是使用 QTimer 调用 QXApplication.quit() 但仍然存在问题:该方法将使 sys.exit() 所采用的 exec_() 方法 return 0,因此应用程序将关闭。但以上所有都是不必要的,因为如果你只想获取文件的路径,那么你不需要使用 QWidget,你可以使用以下内容:
import sys
from PySide2.QtWidgets import QApplication, QFileDialog
def get_filename():
app = QApplication([])
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(
None,
"QFileDialog.getOpenFileName()",
"",
"All Files (*);;Python Files (*.py)",
options=options,
)
return fileName
if __name__ == "__main__":
filename = get_filename()
if filename:
print(filename)
我有以下代码并想执行以下操作:
- 最重要的一点:单击文件并获取其文件路径后,我希望 GUI 退出,因为我会将该路径提供给另一个脚本 (
another_script
),然后我将导入该脚本
我的问题是,在脚本成功打印所选文件的路径后,GUI 不会自行终止,我无法 运行 another_script
并且我卡在了终端
import sys
from PySide2.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit, QFileDialog
from PySide2.QtGui import QIcon
class App(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.openFileNameDialog()
def openFileNameDialog(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,
"QFileDialog.getOpenFileName()",
"","All Files (*);;Python Files (*.py)",
options=options)
if fileName:
print(fileName)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
import another_script
即使您选择了文件,事件循环仍将继续 运行,一个可能的解决方案是使用 QTimer 调用 QXApplication.quit() 但仍然存在问题:该方法将使 sys.exit() 所采用的 exec_() 方法 return 0,因此应用程序将关闭。但以上所有都是不必要的,因为如果你只想获取文件的路径,那么你不需要使用 QWidget,你可以使用以下内容:
import sys
from PySide2.QtWidgets import QApplication, QFileDialog
def get_filename():
app = QApplication([])
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(
None,
"QFileDialog.getOpenFileName()",
"",
"All Files (*);;Python Files (*.py)",
options=options,
)
return fileName
if __name__ == "__main__":
filename = get_filename()
if filename:
print(filename)