PyQt5 QFileDialog зависает при нажатии CLIPython

Программы на Python
Ответить
Anonymous
 PyQt5 QFileDialog зависает при нажатии CLI

Сообщение Anonymous »

Я создал интерфейс командной строки с помощью щелчка мыши, в котором одна команда открывает диалоговое окно с файлом, чтобы я мог выбрать несколько файлов. Оно работало уже довольно давно, но теперь больше не работает, и я застрял.
Мое полное приложение работает нормально из PyCharm, но не при вызове через PowerShell или командную строку Windows по умолчанию.
Вот минимальный пример. В этом случае он даже не запускается из PyCharm. Диалоговое окно файла открывается, зависает, а затем аварийно завершает работу всей программы.
Я использую PyQt5==5.15.11 и нажимаю ==8.3.1

Код: Выделить всё

import os
import sys

import click
from PyQt5.QtWidgets import QApplication, QFileDialog

@click.command()
@click.option('-s', '--start-path', type=click.Path(exists=True), default=os.getcwd())
def select_files(
start_path: str
) -> None:
_ = QApplication.instance() or QApplication(sys.argv)
files, _ = QFileDialog.getOpenFileNames(
None,
'Select files',
start_path,
'.csv, .cfg (*.csv *.cfg)'
)
print(files)

@click.group()
@click.pass_context
def cli(ctx: click.Context) -> None:
ctx.max_content_width = 100

cli.add_command(select_files, name='select')

if __name__ == '__main__':
cli()
Назовем это как: python click_test.py select -s c:\test.
Уже пробовал QFileDialog.DontUseNativeDialog и даже пользовательскую потоковую обработку, но безуспешно.
РЕДАКТИРОВАТЬ: было бы неплохо полностью отказаться от PyQt и заменить его чем-то другим, например tkinter или что-то в этом роде.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... -click-cli
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»