簡體   English   中英

執行def功能時,GUI凍結。 使用線程?

[英]GUI freezes when executing def function. Use threads?

我制作了一個小程序,其中有2個按鈕,每個按鈕都有特定功能。 這是代碼的簡化版本。

一切正常,除了按鈕凍結並停留在單擊位置,並且整個GUI凍結直到命令完成為止。 據我所知,在這種情況下最好使用線程,但是我不知道如何在此示例中實現它。

我將林間空地和pygtk用於gui。

    def do1:
        t = 2
        #do something
        time.sleep(t)
        #do something
        time.sleep(t)
def do2:
        t = 3
        #do something
        time.sleep(t)
        #do something
        time.sleep(t)

class we:
        wTree = None
        def __init__( self ):                
                self.wTree = gtk.glade.XML( "ui.glade" )

                dic = {
                        "on_buttonSone" : self.sone,
                        "on_buttonStwo" : self.stwo,
                }
                self.wTree.signal_autoconnect( dic )              
                gtk.main()

        def sone(self, widget):
                i = 0
                while i < 3:
                        t = 1
                        #do something
                        i += 1
                        time.sleep(t)           
                self.wTree.get_widget("entryResult").set_text("Done.")
        def stwo(self, widget):
                start = time.clock()
                array = ['A','B']
                adict = {'A':do1,'B':do2}
                for f in array:
                        adict[f]()
                end = time.clock()
                elapsed = end - start
                gg = round(elapsed,2)             
                self.wTree.get_widget("entryResult").set_text(str(gg))             

go=we()

pyGTK的FAQ中有一整節專門討論線程

20.6似乎是一個很好的最小示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM