小编use*_*144的帖子

如何正确使用argparse subparsers?

我一直在搜索这里和一般的子分析器示例,但似乎无法想象这个看似简单的事情.

我有两个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)

python argparse

50
推荐指数
1
解决办法
5万
查看次数

如何保持选择 QPushbutton,然后找到按钮网格中选择的内容(pyQt)

#!!/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)

python qt qpushbutton

3
推荐指数
1
解决办法
4453
查看次数

标签 统计

python ×2

argparse ×1

qpushbutton ×1

qt ×1