为什么我需要使用"sys.argv"来启动PyQt中的QApplication?

29

我试图理解PyQt是做什么的。而我最初不理解的一件事情是:

QApplication(sys.argv)

为什么我需要给QApplication传递这个参数?我知道sys.argv的作用。但在我的脚本中,我不需要它。


7
感谢您的好奇心并提出问题,同时请参见https://dev59.com/LWgt5IYBdhLWcg3w7BuL。 - Trilarion
9
对于好奇心,我点赞。我喜欢这种问题,问者想要理解代码为什么能够工作,而不是为什么代码不能工作。经过在Stack Overflow上待了5年后,看到这些问题没有得到应有的关注(有时甚至会被踩),真的很遗憾。可能是因为大多数程序员只关心代码是否能够运行,一旦代码能够正常工作就算任务完成。相比之下,这些探究为什么代码能够工作的问题比那些“我的代码有什么错误”或“该怎么解决”的问题更有价值。 - pouya
1
...哎呀...我不小心点了赞;-) - ZF007
2个回答

14

这会调用 C++ 类 QApplication 的构造函数。它使用 sys.argv(C++ 中的 argcargv)来初始化 QT 应用程序。你可以传递各种参数给 QT,例如样式、调试内容等。

请查看此处以获取选项的完整列表。


在C++中不能给出默认参数吗? 所以我必须始终插入一个空列表 但我想我会挺过去的。 - Sir2B
1
@TobiasObermayer 这是QT中的一种惯例。不要传递一个空列表,而是传递真正的sys.argv。至少它包含可执行文件的名称,QT可能会使用它。 - dmg
如果你从一个几乎空白的脚本启动一个GUI,它会在命令行中失败。我猜是因为sys.argv不一样。至少文件名不同,应用程序的启动似乎被拒绝了。 - ZF007

7

QApplication需要输入一个字符串列表。

因此,您可以将sys.argv转发或者仅仅使用一个空列表:

app = QApplication([])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接