2011-10-07 11 views
5

मैं एक माप और विश्लेषण प्रक्रिया को मापने के लिए एक टिंकर जीयूआई का उपयोग करता हूं, जो मूल रूप से क्लिक किए गए बटन के साथ जा रहा है। चूंकि वे माप कुछ समय लग सकता है, मैं एक प्रगति बार, अर्थात् इस एक में शामिल करने की कोशिश की:मेरा टिंकर जीयूआई भी ... स्थिर है?

http://tkinter.unpythonic.net/wiki/ProgressMeter

लेकिन जब मैं इस प्रक्रिया को प्रारंभ करते हैं, मेरे पूरे Tkinter खिड़की जब तक माप से किया जाता है बकवास में बदल जाता है और यह थोड़ी सी पुनः लोड हो जाती है, मेरी प्रगति पट्टी भी 100% सेट है। यह थोड़े नहीं है कि मैं क्या करना चाहता था।

वहां क्या हुआ? मैं इस पूरी प्रोग्रामिंग चीज के लिए काफी नया हूं, इसलिए मेरे पास अनुमान लगाने वाले सभी टूल्स नहीं हैं। क्या मुझे एक अलग धागा या ऐसा कुछ पेश करने की ज़रूरत है, ताकि माप और टिंकर मेनलोप (क्या वह है?) एक साथ चलते हैं? अगर ऐसा है, तो मैं वह कैसे करू?

उत्तर

0

कॉल widget.update()/root_window.update() हर बार जब आप प्रगति बार

+1

अद्यतन कॉल करने के लिए खतरनाक है (इतना खतरनाक नहीं है, बल्कि, अनपेक्षित साइड इफेक्ट्स का कारण बन सकता है)। अंगूठे के नियम के रूप में, यदि आपको नहीं पता कि यह क्यों खतरनाक है तो आपको इसे कॉल नहीं करना चाहिए। आमतौर पर, 'update_idletasks' बेहतर विकल्प है। –

2

एक प्रगति बार बनाओ अद्यतन

progress = ttk.Progressbar(bottommenuframe, orient=HORIZONTAL, length=100, maximum=190073,  mode='determinate') 
progress.pack(side=RIGHT) 

progress.start() ## this starts the progressbar 

तो अपने विश्लेषण के दौरान (ये मेरे कोड के स्निपेट हैं कि एक 67MB फ़ाइल संसाधित करता है।):

def analysisfunction(): 
    progress.step(1) 
    ##do some analysis 
    root.after(0, analysisFunction) 

    if job == complete: 
     stop 

जैसा कि मैंने कहा था कि यह मेरी 67 एमबी फ़ाइल और टिंकर के साथ काम करेगा। उम्मीद है कि थोड़ा मदद करता है :)

संबंधित मुद्दे