2014-09-05 124 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