Зачем мне нужен sys.argv для запуска QApplication в PyQt?

Я пытаюсь понять, что делает PyQt. И одной из первых вещей, которые я не сделал, было:

QApplication(sys.argv)

Почему я должен давать QApplication этот аргумент? Я знаю, что делает sys.argv. Но в моих сценариях мне это не понадобится.


person Sir2B    schedule 14.01.2015    source источник
comment
+ 1 за любопытство и вопросы, также см. для pyqt">stackoverflow.com/questions/11713006/   -  person Trilarion    schedule 28.01.2015
comment
+1 за любопытство, мне нравятся такие вопросы, которые спрашивают, хотят понять Почему код работает вместо Почему код не работает это действительно грустно после 5 лет существования в stackoverflow я вижу, что эти вопросы не получают той любви, которой они заслуживают (видел, что в некоторых случаях некоторые из них были отклонены!!!), вероятно, потому, что большинство кодеров хотят, чтобы код работал, он работает, работа сделана. Эти вопросы более ценны, чем вопросы «Каково решение или почему в моем коде есть ошибка».   -  person pouya    schedule 25.08.2017
comment
...упс... Я проголосовал не случайно ;-)   -  person ZF007    schedule 17.03.2018


Ответы (2)


Это вызывает конструктор класса C++ QApplication. Он использует sys.argv (argc и argv в C++) для инициализации приложения QT. Существует множество аргументов, которые вы можете передать в QT, например, стили, средства отладки и так далее.

Взгляните на это, чтобы увидеть полный список параметров.

person dmg    schedule 14.01.2015
comment
Разве в С++ нельзя указать аргумент по умолчанию? Поэтому я всегда должен вставлять пустой список. Но я думаю, что переживу это. - person Sir2B; 14.01.2015
comment
@TobiasObermayer Это так, но это соглашение в QT. Не передавайте пустой список, передавайте настоящий sys.argv. По крайней мере, он содержит имя исполняемого файла, который QT может использовать или не использовать. - person dmg; 14.01.2015
comment
Если вы запускаете графический интерфейс из почти пустого другого скрипта, он не работает в командной строке. cus sys.argv, я думаю, не то же самое. По крайней мере, имена файлов разные, и запуск приложения кажется отклоненным. - person ZF007; 17.03.2018

QApplication принимает на вход список строк.

Таким образом, вы можете переслать sys.argv или просто пустой список:

app = QApplication([])
person sebastian    schedule 14.01.2015