2014-09-05 126 views
0

假设有一个QTableWidget充满了用户的数据,他/她希望能够使用多个用户定义的条件语句对其执行“高级搜索” :一个人(程序员,而不是用户)如何去执行代码中的一项功能,以使用户能够执行此搜索?Python PyQt QTableWidet:如何实现“高级搜索”功能

例如,假设用户希望下面的搜索结果:

(column1 > 20 AND column2 < 50) OR column3 = "cloud" 

想到的会以某种方式把用户的搜索条件和产生某种“元代码”的第一种方法,但我不知道这将如何工作。

+0

听起来像你说的做就像“SQL”查询命令? – 2014-09-06 09:36:10

+0

您希望在哪里显示搜索结果? – Aleksandar 2014-09-08 08:11:22

+0

最终,在QTableWidget中,只有在执行用户定义的查询后才能显示结果。我的问题涉及用户定义的查询是如何在第一位执行的。 – Ryan 2014-09-08 09:49:52

回答

2

首先你写一个parser,然后你定义一个函数/语法column,根据当前行给你一个表的列的内容。然后你遍历每一行,评估解析后的表达式并返回所有正确评估的行。

有关如何编写解析器的更多信息,请参阅Recursive descent parser

+0

感谢您的回答。我相信我会尝试实现这里给出的答案:http://stackoverflow.com/questions/25774151/use-a-string-representing-a-logical-operator-in-a-python-expression – Ryan 2014-09-11 06:04:56