生成treeWidget树与获取treeWidget树节点的数据
import sys
from PyQt5. QtCore import Qt
from PyQt5. QtWidgets import QApplication, QTreeWidgetItem, QLineEdit, QSpinBox, QComboBox
from PyQt5. QtWidgets import QWidget
from release_test import Ui_Form
CASE_CONFIG = {
"test1" : [
{ "name" : "运行次数" , "value" : QSpinBox, "min" : 0 , "max" : 10 , "default" : 1 } ,
{ "name" : "超时(秒)" , "value" : QSpinBox, "min" : 0 , "max" : 60 , "default" : 0 } ,
] ,
"test2" : [
{ "name" : "采集11" , "value" : QLineEdit, "default" : "50020200" } ,
{ "name" : "采集22" , "value" : QLineEdit, "default" : "20210200,20000200,20010200,20010400,20040200,20050200,200A0200,00100200,00000200,00200200" } ,
{ "name" : "采集间隔(分钟)" , "value" : QComboBox, "items" : [ "1" , "5" , "15" ] , "default" : "5" } ,
{ "name" : "超时(秒)" , "value" : QSpinBox, "min" : 0 , "max" : 9999 , "default" : 0 } ,
]
}
class MainModule ( QWidget, Ui_Form) :
def __init__ ( self) :
super ( ) . __init__( parent= None )
self. setupUi( self)
self. init_case_tree( )
self. save_conf_btn. clicked. connect( self. save_conf)
def init_case_tree ( self) :
self. treeWidget. setHeaderLabels( [ "参数" , "值" ] )
self. treeWidget. setColumnWidth( 0 , 250 )
for case_name in CASE_CONFIG:
case_item = QTreeWidgetItem( [ case_name] )
for conf in CASE_CONFIG[ case_name] :
conf_name_item = QTreeWidgetItem( [ conf[ "name" ] ] )
case_item. addChild( conf_name_item)
conf_value_item = conf[ "value" ] ( )
if isinstance ( conf_value_item, QSpinBox) :
min_value = conf[ "min" ]
max_value = conf[ "max" ]
default_value = conf[ "default" ]
conf_value_item. setRange( min_value, max_value)
conf_value_item. setValue( default_value)
conf_value_item. setMaximumWidth( 100 )
elif isinstance ( conf_value_item, QComboBox) :
items = conf[ "items" ]
default_value = conf[ "default" ]
conf_value_item. addItems( items)
conf_value_item. setCurrentText( default_value)
conf_value_item. setMaximumWidth( 100 )
elif isinstance ( conf_value_item, QLineEdit) :
default_value = conf[ "default" ]
conf_value_item. setText( default_value)
self. treeWidget. setItemWidget( conf_name_item, 1 , conf_value_item)
case_item. setCheckState( 0 , Qt. Checked)
self. treeWidget. addTopLevelItem( case_item)
self. treeWidget. expandAll( )
def save_conf ( self) :
conf_info = { }
case_cnt = self. treeWidget. topLevelItemCount( )
for case_index in range ( case_cnt) :
case_item = self. treeWidget. topLevelItem( case_index)
case_name = case_item. text( 0 )
conf_info[ case_name] = { }
conf_cnt = case_item. childCount( )
print ( case_name)
for conf_index in range ( conf_cnt) :
conf_item = case_item. child( conf_index)
conf_name = conf_item. text( 0 )
conf_value_item = self. treeWidget. itemWidget( conf_item, 1 )
if isinstance ( conf_value_item, QSpinBox) :
value = conf_value_item. value( )
elif isinstance ( conf_value_item, QComboBox) :
value = conf_value_item. currentText( )
elif isinstance ( conf_value_item, QLineEdit) :
value = conf_value_item. text( )
else :
value = ""
print ( conf_name, value)
if __name__ == '__main__' :
app = QApplication( sys. argv)
mainWindow = MainModule( )
mainWindow. show( )
sys. exit( app. exec ( ) )
test1
运行次数 1
超时( 秒) 0
test2
采集11 50020200
采集22 20210200 , 20000200 , 20010200 , 20010400 , 20040200 , 20050200 , 200A0200, 00100200 , 00000200 , 00200200
采集间隔( 分钟) 5
超时( 秒) 0