clear file value (清除文件框中的值)

[b]1 js代码[/b]


<SCRIPT LANGUAGE="JavaScript">
<!--
var Upload = {
clear: function(id){
var up = (typeof id=="string")?document.getElementById(id):id;
if (typeof up != "object") return null;
var tt = document.createElement("span");
tt.id = "__tt__";
up.parentNode.insertBefore(tt,up);
var tf = document.createElement("form");
tf.appendChild(up);
document.getElementsByTagName("body")[0].appendChild(tf);
tf.reset();
tt.parentNode.insertBefore(up,tt);
tt.parentNode.removeChild(tt);
tt = null;
tf.parentNode.removeChild(tf);
},

clearForm: function(){
var inputs,frm;
if (arguments.length == 0)
{
inputs = document.getElementsByTagName("input");
}else{
frm = (typeof arguments[0] == "string")?document.getElementById(arguments[0]):arguments[0];
if (typeof frm != "object") return null;
inputs = frm.getElementsByTagName("input");
}

var fs=[];
for ( var i=0; i<inputs.length; i++ )
{
if (inputs[i].type == "file") fs[fs.length] = inputs[i];
}

var tf = document.createElement("form");
for ( var i=0; i<fs.length; i++ )
{
var tt = document.createElement("span");
tt.id = "__tt__" + i;
fs[i].parentNode.insertBefore(tt, fs[i]);
tf.appendChild(fs[i]);
}
document.getElementsByTagName("body")[0].appendChild(tf);
tf.reset();
for ( var i=0; i<fs.length; i++)
{
var tt = document.getElementById("__tt__" + i);
tt.parentNode.insertBefore(fs[i],tt);
tt.parentNode.removeChild(tt);
}
tf.parentNode.removeChild(tf);
}
}
//-->
</SCRIPT>


[b]2 html调用示例[/b]

<form name="f" id="f" method="post">
<input type="file" name="f1" id="f1" />
<input type="button" value="clear" onclick="Upload.clear('f1')" /><br />
<input type="file" name="f2" id="f2" /><br />
<input type="file" name="f3" id="f3" /><br />
<input type="file" name="f4" id="f4" /><br />
<input type="file" name="f5" id="f5" /><br />
<input type="file" name="f6" id="f6" /><br />
<input type="file" name="f7" id="f7" /><br />
<input type="file" name="f8" id="f8" /><br />
<input type="button" value="clearAll" onclick="Upload.clearForm()" /><br />
<input type="submit" value="submit" /><input type="reset" value="reset" />
</form>
<form name="form" id="form" method="post">
<input type="file" name="f9" id="f9" /><br />
<input type="file" name="f10" id="f10" /><br />
<input type="button" value="clearThisForm"
onclick="Upload.clearForm('form')" />
</form>
好的,让我来回答您的问题。首先,您可以使用Python内置的json库来读取字典中的键和。将字典中的键作为子节点添加到树形结构中,然后使用递归函数遍历字典中的,并将其中的子字典设置为子节点,在每个节点处添加复选框即可实现图形化界面。 以下是实现该功能的示例代码: ```python import json from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QTreeWidget, QTreeWidgetItem, QCheckBox class DictTree(QTreeWidget): def __init__(self, parent=None): super().__init__(parent) self.setHeaderLabels(['Key', 'Value']) self.__checkbox_dict = {} self.itemDoubleClicked.connect(self.__on_item_double_clicked) def load_dict(self, dct): self.clear() root = QTreeWidgetItem(self, [str(dct)]) self.build_tree(root, dct) def build_tree(self, parent, dct): if not isinstance(dct, dict): return for key, value in dct.items(): item = QTreeWidgetItem(parent, [str(key)]) self.__checkbox_dict[id(item)] = QCheckBox(self) self.setItemWidget(item, 0, self.__checkbox_dict[id(item)]) parent.addChild(item) self.build_tree(item, value) def get_selected_items(self): items = [] for widget_id, checkbox in self.__checkbox_dict.items(): if checkbox.isChecked(): item = self.itemAt(self.visualItemRect(self.itemFromId(widget_id)).center()) items.append(item) return items def __on_item_double_clicked(self, item, column): for i in range(item.childCount()): child = item.child(i) self.__checkbox_dict[id(child)].setChecked(self.__checkbox_dict[id(item)].isChecked()) ``` 以上是自定义的QTreeWidget部分,您可以根据您的需求进行修改。接下来是主要的代码逻辑: ```python def read_dict_file(file_path): with open(file_path, 'r') as f: data = json.load(f) return data def main(): app = QApplication([]) widget = QWidget() layout = QVBoxLayout(widget) tree = DictTree(widget) layout.addWidget(tree) dct = read_dict_file('example.json') tree.load_dict(dct) widget.show() app.exec_() if __name__ == '__main__': main() ``` 在示例代码中,`example.json`是一个字典类型的JSON文件,您可以替换为您的字典文件路径。它将显示一个包含所有键的树形结构,可以展开和收起嵌套的子项,并在每个节点处添加复选框以进行选择。`get_selected_items`方法将返回当前选定的所有节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值