我正在尝试创建一个用于搜索代码簿文本文件的GUI。用户将输入关键字,结果将打印在QScrollArea
旁边,旁边有一个复选框。我有所有的工作代码,但我的问题是,有时可能会有近1200个复选框被添加,它真的减慢了一切,GUI冻结了大约4秒。有没有办法能够添加所有这些复选框,但是在添加它们时不会冻结整个事物?我已经看过结果回来的速度有多快,即使是超过1000个结果,它也会在大约0.32秒内恢复。我的想法是动态添加小部件正在减慢它的速度。感谢您的任何建议和时间
代码说明
下面我发布了我正在解释的功能。基本上每次在搜索栏中添加一个字母时,它都会调用函数search_results
。我有另一个名为codeBook
的类,它执行我所有的实际搜索逻辑,然后将结果作为list
返回,并将其分配给results
变量。然后它循环遍历results
并打印出复选框。
当前工作代码
def search_results(self):
try:
start_x = 10
start_y = 10
test_input = self.findChild(QScrollArea, "Results_choice_box")
Search_data = self.findChild(QLineEdit, "SearchBox")
grid = self.findChild(QGridLayout, "gridLayout")
Search_data = Search_data.text()
if len(Search_data) > 4:
search = codeBook()
results = search.codebook_search(Search_data,self.CodeBook)
self.remove_previous_from_window()
for i in range(0,len(results)-1):
checkBox = QCheckBox(results[i], self)
checkBox.setObjectName("checkBox__" +str(i))
grid.addWidget(checkBox,start_y + (i*10),start_x)
checkBox.stateChanged.connect(self.update_text_window)
else:
self.remove_previous_from_window()
except:
pass