GUI动态添加复选框更快?

时间:2017-05-03 20:48:51

标签: python python-3.x user-interface pyqt pyqt5

我正在尝试创建一个用于搜索代码簿文本文件的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

0 个答案:

没有答案