【问题标题】:Why do I need "sys.argv" to start a QApplication in PyQt?为什么我需要“sys.argv”来在 PyQt 中启动 QApplication?
【发布时间】:2015-03-12 11:38:56
【问题描述】:

我试图了解 PyQt 的作用。我没有做的第一件事是:

QApplication(sys.argv)

为什么我必须给 QApplication 这个论点?我知道sys.argv 做了什么。但在我的脚本中我不需要它。

【问题讨论】:

  • + 1 表示好奇和提问,另见stackoverflow.com/questions/11713006/…
  • +1 出于好奇,我喜欢提问者想了解为什么代码有效而不是为什么代码无效的这类问题在 stackoverflow 上呆了 5 年后真的很难过完毕。这些问题比解决方案是什么或为什么我的代码类型的问题有错误更有价值。
  • ...哎呀...我被一个非意外投了赞成票 ;-)

标签: python pyqt command-line-arguments qapplication


【解决方案1】:

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

查看this 以获取完整的选项列表。

【讨论】:

  • 在 C++ 中不能提供默认参数吗?所以我必须总是插入一个空列表但我想,我会活下来。
  • @TobiasObermayer 是,但这是 QT 中的约定。不要传递空列表,传递真正的sys.argv。至少它包含 QT 可能使用也可能不使用的可执行文件的名称。
  • 如果您从几乎空的其他脚本启动 GUI,它将在命令行失败。 cus sys.argv 我猜不一样。至少文件名不同,应用程序的启动似乎被拒绝。
【解决方案2】:

QApplication 将字符串列表作为输入。

所以你可以转发 sys.argv 或者只是一个空列表:

app = QApplication([])

【讨论】:

    猜你喜欢
    • 2018-02-10
    • 2016-03-11
    • 2019-08-21
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多