使用pyforms获取选项卡状态

时间:2018-03-05 12:20:03

标签: pyforms

我正在使用pyforms创建一个标签小部件,我想获取并设置当前的活动标签。考虑这个例子:

self.formset = [{ 
    'Person A': ['_firstname', '_lastname'],
    'Person B': ['_firstname', '_lastname'] }]

因此我们得到2个标签Person APerson B。如果我在它们之间切换,我希望得到类似于PyQt函数currentIndex()的信息。到目前为止,我还没有能够在pyforms文档中找到一个方法,有没有办法只使用pyforms来实现这个?

1 个答案:

答案 0 :(得分:1)

获取或设置选项卡小部件的当前索引的主要问题是在生成布局时访问由pyforms创建的QTabWidget。一旦你有权访问它,你只需调用小部件的 setCurrentIndex(int)/ currentIndex()
对此进行(脏)快速修复是修改pyforms模块文件中的BaseWidget.py,使用virtualenv时可以<VIRTUALENV_DIR>/lib/python3.6/site-packages/pyforms/gui

def generate_tabs(self, formsetdict):
    """
    Generate QTabWidget for the module form
    @param formset: Tab form configuration
    @type formset: dict
    """
    tabs = QTabWidget(self)
    for key, item in sorted(formsetdict.items()):
        ctrl = self.generate_panel(item)
        tabs.addTab(ctrl, key[key.find(':') + 1:])
    self.tabs = tabs
    return tabs

请注意附加:

self.tabs = tabs

然后在widget / app的代码中(BasicWidget的子类):

>>> _t = self.tabs
>>> _t.setCurrentIndex(3) # activate the 4th tab
>>> print(_t.currentIndex())
3