PyQT5 QFileDialog window 标题未显示在 mac
PyQT5 QFileDialog window title not showing on mac
我在 Windows 上制作了一个 PyQt5 应用程序,现在我想在 Mac 上使用该应用程序。该应用程序提示用户 select 几个不同的文件。我使用 QFileDialog window 的标题让用户知道哪些文件是这样的:
instrument_file_raw=QFileDialog().getOpenFileName(self, "Select Instrument File","","Excel (*.xlsx)")
instrument_file_raw=str(instrument_file_raw[0])
if instrument_file_raw=="":
error_dialog = QErrorMessage(self)
error_dialog.showMessage('No filename entered')
return
run_list_file=QFileDialog().getOpenFileName(self, "Select Run List File","","Excel (*.xlsx)")
run_list_file=str(run_list_file[0])
if run_list_file=="":
error_dialog = QErrorMessage(self)
error_dialog.showMessage('No filename entered')
return
然而,当我 运行 在 Mac 上使用相同的代码时,文件资源管理器打开时没有显示 window 标题。即使我手动设置 window 标题
instrument_file_window=QFileDialog()
instrument_file_window.setWindowTitle("Select Instrument File")
instrument_file_raw=instrument_file_window.getOpenFileName(self,"Select Instrument File","","Excel (*.xlsx)")
有没有办法在 Mac 上显示 window 标题?我如何指示用户输入什么?
这是一个尚未修复的已知问题(请参阅 QTBUG-59805)并且与从版本 10.11 (El Capitan) 开始的 macOS 更改有关。
如果确实需要显示标题,唯一的解决办法是使用非本机 文件对话框选项。
path, filter = QtWidgets.QFileDialog.getOpenFileName(
self, "Select Instrument File", "", "Excel (*.xlsx)",
options=QtWidgets.QFileDialog.DontUseNativeDialog
)
注意getOpenFileName
和其他类似函数一样,是一个static函数:它构造并配置一个new文件对话框实例,然后 returns 它。事实上,如果你仔细看我上面的代码,我在 QFileDialog
.
之后没有使用任何括号
除了参数中的选项之外,如果创建的对话框是本机的,则没有 no 方法来访问它,并且对于非本机对话框只有有限的访问权限,但只能通过使用复杂的系统(如计时器检查顶级小部件)也不总是可靠的。
以上也意味着:
- 您不需要创建新实例,因为它不会被使用;
- 同理,设置任何属性(如window标题)都完全没有效果;
我在 Windows 上制作了一个 PyQt5 应用程序,现在我想在 Mac 上使用该应用程序。该应用程序提示用户 select 几个不同的文件。我使用 QFileDialog window 的标题让用户知道哪些文件是这样的:
instrument_file_raw=QFileDialog().getOpenFileName(self, "Select Instrument File","","Excel (*.xlsx)")
instrument_file_raw=str(instrument_file_raw[0])
if instrument_file_raw=="":
error_dialog = QErrorMessage(self)
error_dialog.showMessage('No filename entered')
return
run_list_file=QFileDialog().getOpenFileName(self, "Select Run List File","","Excel (*.xlsx)")
run_list_file=str(run_list_file[0])
if run_list_file=="":
error_dialog = QErrorMessage(self)
error_dialog.showMessage('No filename entered')
return
然而,当我 运行 在 Mac 上使用相同的代码时,文件资源管理器打开时没有显示 window 标题。即使我手动设置 window 标题
instrument_file_window=QFileDialog()
instrument_file_window.setWindowTitle("Select Instrument File")
instrument_file_raw=instrument_file_window.getOpenFileName(self,"Select Instrument File","","Excel (*.xlsx)")
有没有办法在 Mac 上显示 window 标题?我如何指示用户输入什么?
这是一个尚未修复的已知问题(请参阅 QTBUG-59805)并且与从版本 10.11 (El Capitan) 开始的 macOS 更改有关。
如果确实需要显示标题,唯一的解决办法是使用非本机 文件对话框选项。
path, filter = QtWidgets.QFileDialog.getOpenFileName(
self, "Select Instrument File", "", "Excel (*.xlsx)",
options=QtWidgets.QFileDialog.DontUseNativeDialog
)
注意getOpenFileName
和其他类似函数一样,是一个static函数:它构造并配置一个new文件对话框实例,然后 returns 它。事实上,如果你仔细看我上面的代码,我在 QFileDialog
.
之后没有使用任何括号
除了参数中的选项之外,如果创建的对话框是本机的,则没有 no 方法来访问它,并且对于非本机对话框只有有限的访问权限,但只能通过使用复杂的系统(如计时器检查顶级小部件)也不总是可靠的。
以上也意味着:
- 您不需要创建新实例,因为它不会被使用;
- 同理,设置任何属性(如window标题)都完全没有效果;