3
我不知道我是否使用正確的代碼來做到這一點。我寫了一個小腳本來查找文件夾中的硬盤:Tkinter GUI凍結
import sys
from tkinter import *
from tkinter import ttk
import threading
import os
mGui = Tk()
mGui.geometry('450x80')
mGui.title('Copy folder')
progressbar = ttk.Progressbar(orient=HORIZONTAL, length=200, mode='determinate')
progressbar.pack(side="bottom")
xe = 'progresscache'
def handle_click():
progressbar.start()
def searcher():
for root, dirs, files in os.walk(r'c:'):
for name in dirs:
if name == xe:
print ("find !")
progressbar.stop()
t = threading.Thread(target=searcher)
t.start()
dirBut = Button(mGui, text='Go find !', command = handle_click)
dirBut.pack()
mGui.mainloop()
經過多次嘗試,我還是不得不凍結GUI,當我點擊我的boutton。
所以我決定用線程調用這個動作。
我不知道我們是否應該這樣做,這樣既避免凍...
好了,一切似乎沒有凍結工作..
現在,我想做一類我的代碼, 但每次我得到線程 這裏的錯誤是我的代碼:
我班Searcher.py(在Appsave文件夾)
import os
import threading
class Searcher:
def recherche(zeFolder):
for root, dirs, files in os.walk(r'c:'):
for name in dirs:
if name == zeFolder:
print ("Finded !")
progressbar.stop()
threading.Thread(target=recherche).start()
我主要的.py
# -*- coding: utf-8 -*-
import sys
from tkinter import *
from tkinter import ttk
import threading
import os
from Appsave.Searcher import Searcher
mGui = Tk()
mGui.geometry('450x80')
mGui.title('Djex save')
progressbar = ttk.Progressbar(orient=HORIZONTAL, length=200, mode='determinate')
progressbar.pack(side="bottom")
xe = 'progresscache'
la = Searcher
def handle_click():
progressbar.start()
la.recherche(xe)
dirBut = Button(mGui, text='Go find !', command = handle_click)
dirBut.pack()
mGui.mainloop()
這裏是輸出誤差
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\python34\lib\threading.py", line 921, in _bootstrap_inner
self.run()
File "C:\python34\lib\threading.py", line 869, in run
self._target(*self._args, **self._kwargs)
TypeError: recherche() missing 1 required positional argument: 'zeFolder'
我希望能有足夠的細節,我的問題尋求幫助,謝謝
你好,非常感謝你的支持者。當我建立項目,一切正常,但是當我點擊按鈕時,我有一個錯誤:文件「S:\ pypy \ snake \ Appsave \ Searcher.py」,第14行,運行 如果名稱== zeFolder: NameError:名字'zeFolder'沒有定義 – jmercier 2015-02-08 18:44:16
@jmercier糟糕!在'zeFolder'之前,我忘了把'self.'。檢查更新的代碼! – cdonts 2015-02-08 19:01:24
你是我的英雄!工作正常 !現在我必須瞭解你的代碼,不要愚蠢地複製粘貼,ty最好的問候 – jmercier 2015-02-08 19:04:58