GUI动态添加复选框更快?

2024-09-26 22:51:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个GUI来搜索代码本的文本文件。用户将键入关键字,结果将打印在QScrollArea中,旁边有一个复选框。我有它的所有工作代码,但我的问题是,有时可能会有接近1200个复选框被添加,它真的减慢了一切,图形用户界面冻结约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

Tags: 代码textselfsearchdatawindowstartresults

热门问题