2014-11-13 2 views
-2

Новичок на Python, в основном у меня есть пользовательский интерфейс с несколькими кнопками, когда я нажимаю одну кнопку, я хотел бы начать обработку/разбор файлов в фоновом режиме, пока я все еще могу играть с пользовательским интерфейсом, Пользовательский интерфейс становится невосприимчивым «вращающимся колесом».generate Еще одна тема в Python

class MyUI(Frame): 

def __init__(self, parent): 

    Frame.__init__(self, parent, background="white") 
    self.parent = parent 
    self.initUI() 


def initUI(self): 
self.validate_button = Button(self, 
       text='Validate', 
       command=self.validate_files).pack() 

def validate_files(self): 
    try: 
     t = Thread(target=self.process_files(), args=('labala',1)) 
     t.start 
     t.join 
    except Exception, errtxt: 
     print errtxt 

def process_colls(self): 
    items = self.lb.curselection() 
    for i in items: 
     self.do_parse(self.varDirName, self.lb.get(int(i))) 

def main(): 
root = Tk() 
root.geometry("600x600+300+300") 
app = MyUI(root) 
root.mainloop() 

if __name__=="__main__": 
    main() 
+0

Для меня ваш код - просто пустой экран. Вам что-то не хватает? – rookie

+0

Исправьте свой отступ. Python невозможно интерпретировать без правильного отступа. – khelwood

+0

Не просто отступ ... в 'validate_files()' вы просто поймаете свои синтаксические ошибки :) –

ответ

1

Заменить self.process_files() с self.process_files где вы создаете тему:

t = Thread(target=self.process_files, args=('labala',1)) 

Вы должны пройти фикцию нитку в качестве цели, а не результат.

Кроме того, не используйте join(), если вы хотите, чтобы функция возвращалась во время работы потока.

+0

self.process_files не отключает функцию, self.process_files() делает, но все равно становится невосприимчивым. Это проблема, items = self.lb.curselection(), так как она читает список из основного пользовательского интерфейса? – user1529412

+0

@ user1529412 является 'self.process_file()' функтором? «target» должен быть обратным вызовом, а не значением. Если 'self.process_file()' возвращает функцию, которую я удалю, я могу ответить, но вы должны исправить свой вопрос, потому что теперь невозможно понять, что произойдет. –

+0

Хм, я вижу, я буду играть с ним, любая идея, почему self.process_files не запускается? – user1529412

0

попытаться создать тему используя threading.Thread. Этот фрагмент должен помочь вам найти дополнительные ответы

from threading import Thread 

... 

_thread = Thread(target=lambda: my_func()) 
_thread.start() 

В вашем примере вы забыли круглые скобки для вызова методов.

+0

Функция срабатывает отлично, я получаю правильные результаты. Ваше заявление и мое - то же самое, я попробовал их обоих. – user1529412

Смежные вопросы