私はPythonが初めてで、いくつかのHTMLファイル/ URLのコンテンツを取得する際に問題があり、進行状況バーでステータスを表示します:
これは私が使用する関連コードです:
プログレスバー:
def createProgressbar(self):
self.progressbarVar = StringVar()
self.progressbar = ttk.Progressbar( self.masterWindow, variable=self.progressbarVar, length=400, maximum=100, mode='determinate' )
self.progressbar.place(x=100, y=760)
self.progressbarStatus = Label( self.masterWindow, text='Please wait ...', bg='#fafafa', fg='#333', bd=0 )
self.progressbarStatus.place(x=100, y=730)
HTML を読む:
def readHTML(self):
# Set new progressbar max, eg. 20 for 20 files to read
self.progressbar.config(maximum=self.LinkListItemCount)
# Progressbar Counter
i=1
# example for self.LinkListByCatDict
# self.LinkListByCatDict = {'cat1': ['/test/asd.html', '/test/asd2.html'], 'cat2': ['/test/asd.html', '/test/asd2.html']}
for item in self.LinkListByCatDict.items():
actCategory = item[0]
for linkItem in item[1]:
url = 'http://www.example.com'+linkItem
try:
req = urllib.request.Request( url )
open = urllib.request.urlopen( req )
requestContent = open.read()
if self.debug == True:
print('OK: '+url)
except:
if self.debug == True:
print('Error: '+url)
# Progressbar update
self.progressbarVar.set(i)
if self.debug == True:
print('Progressbar act: '+str(i))
i += 1
通常は問題なく動作しますが、ループが処理されている間、インターフェイス全体にビーチボールしか表示されません (Mac OS)。ループの最後で、プログレスバーが 0 から直接 100% にジャンプします。
インターフェイスをハングアップせずに、それを行うより良い方法はありますか?