我正在使用pyforms创建一个标签小部件,我想获取并设置当前的活动标签。考虑这个例子:
self.formset = [{
'Person A': ['_firstname', '_lastname'],
'Person B': ['_firstname', '_lastname'] }]
因此我们得到2个标签Person A
和Person B
。如果我在它们之间切换,我希望得到类似于PyQt函数currentIndex()
的信息。到目前为止,我还没有能够在pyforms文档中找到一个方法,有没有办法只使用pyforms来实现这个?
答案 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