我一直在搜索这里和一般的子分析器示例,但似乎无法想象这个看似简单的事情.
我有两个var类型,其中一个有约束,所以认为subparser是要走的路.例如-t允许"A"或"B".如果用户通过"A",那么他们还需要指定它是"a1"还是"a2".如果他们只通过"B"则没有.
我可以这样做并让argparse返回我通过什么类型的"A"或者它只是"B"?
下面似乎工作但由于某种原因在subparse后传递任何东西时中断.
例如来自Linux终端
>> python test01.py -t A a1 -v 61
Run Code Online (Sandbox Code Playgroud)
错误......
usage: test01.py a1 [-h]
test01.py a1: error: unrecognized arguments: -v
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的.
代码:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='types of A')
parser.add_argument("-t",
choices = ["A", "B"],
dest = "type",
required=True,
action='store',
help="Some help blah blah")
cam_parser = subparsers.add_parser('a1', help='Default')
cam_parser.set_defaults(which='a1')
cam_parser = subparsers.add_parser('a2', help='parse this instead of default')
cam_parser.set_defaults(which='a2')
parser.add_argument("-v",
nargs = '+',
required=True,
dest = "version",
type=int,
action='store',
help="some version help blah blah")
argument …
Run Code Online (Sandbox Code Playgroud) #!!/usr/bin/python
# Qt modules
from PyQt4 import QtCore, QtGui
import sys
class gui(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setWindowTitle('Grid of buttons')
self.resize(450, 300)
#------------------------------------------------------------------------------
# WIDGETS
#------------------------------------------------------------------------------
self.grid = QtGui.QGridLayout()
btnNum = 1
columnCount = 0
rowCount = 0
while btnNum != 26:
button = QtGui.QPushButton(str(btnNum))
self.grid.addWidget(button, rowCount, columnCount)
btnNum += 1
if columnCount == 4:
columnCount = 0
rowCount += 1
else:
columnCount += 1
#------------------------------------------------------------------------------
# LAYOUT
#------------------------------------------------------------------------------
self.idChannelGroup = QtGui.QGroupBox("My Button Layout")
self.idChannelGroup.setLayout(self.grid)
self.mainLayout = QtGui.QVBoxLayout()
self.mainLayout.addWidget(self.idChannelGroup) …
Run Code Online (Sandbox Code Playgroud)