#python #macos #pyqt5 #qfiledialog
Вопрос:
Я кодирую графический интерфейс Qt (PyQt5) в Python на macOS. Я запускаю свою программу, используя python test.py
терминал in.
Когда я пытаюсь использовать статический метод QFileDialog, такой как QFileDialog.GetOpenFileName, я получаю следующую ошибку вместо открытия диалогового окна:
2021-10-11 12:06:48.411 python[49048:17688470] [NSXPCSharedListener endpointForReply:withListenerName:]: an error occurred while attempting to obtain endpoint for listener 'com.apple.view-bridge': Connection interrupted
Я в состоянии обойти это, постоянно перезапуская приложение и пытаясь открыть диалоговое окно, пока оно не заработает. Обычно он работает после 3-5 перезапусков. Это не идеально подходит для будущих пользователей или, если есть данные, которые необходимо сохранить в приложении перед перезапуском.
Вот минимальный воспроизводимый пример сценария:
import sys
from PyQt5.QtWidgets import (
QApplication,
QWidget,
QVBoxLayout,
QPushButton,
QFileDialog
)
class MainWindow(QWidget):
"""The main window of the application"""
def __init__(self, *args, **kwargs):
"""Initializes and shows the main window of the application"""
super().__init__(*args, **kwargs)
self.setLayout(QVBoxLayout())
# open file button
self.open_file_button = QPushButton(self)
self.open_file_button.setText("Open File")
self.open_file_button.clicked.connect(self.open_file)
self.layout().addWidget(self.open_file_button)
self.show()
def open_file(self):
file_name, _ = QFileDialog.getOpenFileName(self)
if file_name:
...
if __name__ == "__main__":
app = QApplication(sys.argv)
main_window = MainWindow()
sys.exit(app.exec())
Версия для macOS: Каталина 10.15.1 (19B88)
Версия Python: 3.8.11
Версия PyQt5: 5.15.4
Версия PyQt5-Qt5: 5.15.2
Комментарии:
1. Есть несколько отчетов, связанных с этим (см. Это ), и, похоже, это проблема с этой конкретной версией Catalina (я бы сказал, что она немного устарела). Можете ли вы попробовать другую версию Каталины? В этом случае единственным возможным обходным путем является использование этой
DontUseNativeDialog
опции.2. Я обновился до Catalina 10.15.7 и до сих пор не сталкивался с этой проблемой. На данный момент мне кажется, что ваш ответ приемлем для меня, учитывая, сколько лет Каталине 10.15.1.