Ошибка при попытке взять входные данные из пути к файлу и передать его другой функции с помощью PyQt5 - PullRequest
2 голосов
/ 07 марта 2020

Я бы хотел передать путь к файлу, который я выбрал из моего p c

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)

button = QPushButton('Louvain Algorithm', self) button.setToolTip('This is an example button') button.move(50,300) 
button.clicked.connect(self.on_click_louvain)

, в другую функцию

def on_click_louvain(self,fileName): 
    # Replace this with your networkx graph loading depending on your format !

    G = nx.read_gml(str(fileName,))

, но я получить эту ошибку

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'False'

Любые идеи для решения ??

1 Ответ

1 голос
/ 07 марта 2020

У вас есть несколько неправильных представлений:

  • Переменная «fileName» является локальной, поэтому к ней нельзя получить доступ другими методами.

  • Переменная «fileName» не будет магически передана в качестве аргумента другого метода. Кроме того, по умолчанию сигнал, по которому щелкнули, имеет логическое значение, связанное с ошибкой.

Решение состоит в том, чтобы сохранить переменную в качестве атрибута класса и затем получить доступ через объект:

def openFileNameDialog(self):
    options = QFileDialog.Options()
    options |= QFileDialog.DontUseNativeDialog
    fileName, _ = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()", "","All Files (*);;Python Files (*.py)", options=options)
    self.fileName = fileName
def on_click_louvain(self): 
    # Replace this with your networkx graph loading depending on your format !
    G = nx.read_gml(self.fileName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...