什么是python PyQt4中使用的sys.argv

Kie*_*den 3 python user-interface qt pyqt4 python-3.x

在编程方面,我还是初学者,在GUI编程方面,我是新手.我正在使用python和PyQt4,我正在遵循教程指南.以下代码块相对容易理解:

import sys
from PyQt4 import QtGui
def window():
    app = QtGui.QApplication(sys.argv)
    w = QtGui.QWidget()
    b= QtGui.QLabel(w)
    b.setText("Hello World!")
    w.setGeometry(100,100,200,50)
    b.move(50,20)
    w.setWindowTitle(“PyQt”)
    w.show()
    sys.exit(app.exec_())
if __name__ == '__main__':
    window()
Run Code Online (Sandbox Code Playgroud)

我可以很好地了解这里发生的事情,但有人可以向我解释一下sys.argv究竟在做什么吗?我不想只是盲目地把它放在每一次,希望它能使我的代码工作!

ekh*_*oro 8

您不需要在PyQt应用程序中使用sys.argv.

如果您想使用命令行参数,它才真正有用.如果不这样做,您只需传入一个空列表:

app = QtGui.QApplication([])
Run Code Online (Sandbox Code Playgroud)

使用时sys.argv,第一个参数自动设置为脚本名称,Qt将使用它来设置applicationName().稍后可以通过arguments()方法访问参数列表:

# test.py
import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)

print('ARGS: %s' % app.arguments())
print('NAME: %r' % app.applicationName())
Run Code Online (Sandbox Code Playgroud)

输出:

$ python test.py -f foo
ARGS: ['test.py', '-f', 'foo']
NAME: 'test.py'
Run Code Online (Sandbox Code Playgroud)

但请注意,一些预定义的参数由Qt在内部处理,并将自动从参数中删除:

$ python test.py -f foo -stylesheet=style.qss
ARGS: ['test.py', '-f', 'foo']
NAME: 'test.py'
Run Code Online (Sandbox Code Playgroud)